小编Pau*_*aul的帖子

Jax-WS Web服务如何工作?每个请求一个端点?

我试图了解Jax-WS Web服务如何工作,但无法找到有关它们细节的任何资源.举例来说:

我使用Jax-WS注释创建了一个非常简单的Java Web服务,就像这样

@WebService(name = "MyService", serviceName = "MyService", portName = "MyServicePort")
public class MyService {

    private int val;

    public MyService() {
        val = 0;
    }

    @WebMethod(action = "setVal")
    public void setVal(@WebParam(name = "arg") int arg) {
        val = arg;
    }

    @WebMethod(action = "getVal")
    public int getVal() {
        return val;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我从中生成一个Web服务(比如说使用WS-Gen),那么构建一个客户端并从单个客户端进行以下调用:setVal(5),getVal()将返回给客户端的值是什么?为什么?

如果客户端A呼叫setVal(5),而客户端B呼叫getVal(),将返回给客户端的值是什么?为什么?

当然,我可以自己构建一个Web服务并对其进行测试,但我希望能够通过探索来解决问题.Jax-Ws是否为每个请求创建了带注释类的新实例?它是否以某种方式将相同的源映射到相同的带注释的类实例?它只是将所有请求映射到带注释的类的单例实例吗?是否存在以某种方式选择的有限注释类实例池?

java web-services jax-ws

3
推荐指数
1
解决办法
1619
查看次数

将参数添加到从我的项目中的100个不同位置调用的方法 - 什么是正确的方法?

所以我正在开发一个代码库,并且有一个实用程序类可以处理为用户生成excel文档.

它有一个叫做的方法 putDataInRowColumn(row, column, data)

它有很多像putObjectsIntoExcel(myBigClass blah)和的方法 putObjectsIntoSpecialExcelType(myBigClass blah)

它调用了像putObjectIntoSpecialRowType(blah.foo(), rowIndex, specialConditions)和的方法putObjectIntoTotallydifferentRowType(blah.bar(), rowIndex, specialConditions)

所有这一切的要点是该方法putDataInRowColumn(row, column, data)从一堆不同的地方被称为公制buttload.像100+.

现在,考虑到这个遗留代码,我需要修改方法以获取其他参数 - 样式信息.99%的方法现在将'null'作为第四个参数,1%将接收包含样式信息的对象.

我修改了方法签名,以接收附加参数,但我发现自己必须编写一个正则表达式来查找/替换所有方法调用.它有效,但这感觉就像走错了路.

我应该怎么做?

java design-patterns

3
推荐指数
2
解决办法
100
查看次数

如何从oracle网站下载JDK的特定更新?

我需要使用特定版本的oracle的JDK:1.8.0_45.

但是,我一直在他们的网站上点击太长时间,似乎无法找到它.

我可以找到最新版本的下载页面(8u60或其他),我可以找到我需要使用的版本的发行说明,但我找不到1.8.0_45版本的链接.

Oracle不会托管他们的旧JDK吗?我在哪里下载可靠和安全的?

java java-8

3
推荐指数
1
解决办法
4092
查看次数

JSP:在 <form:input> 字段中格式化日期?

我有一个 JSP 表单元素,如下所示:

<form:input path="foo" id="bar" value="${myObject.myDate}" class="fizz buzz bang"/>
Run Code Online (Sandbox Code Playgroud)

我想格式化这个日期,使它最初看起来像:yyyy/mm/dd

我知道我可以像这样轻松地在 JSP 中格式化日期:

<fmt:formatDate value="${blah.bla}" pattern="MM-dd-yyyy" />
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能把两者结合起来呢?

当我做:

 <form:input path="foo" id="bar" value=" <fmt:formatDate value="${myObject.myDate}" pattern="MM-dd-yyyy" /> " class="fizz buzz bang"/> 
Run Code Online (Sandbox Code Playgroud)

我在线上遇到异常,例如:

org.apache.jasper.JasperException: Unterminated form:input tag
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

jsp date

3
推荐指数
1
解决办法
9743
查看次数

Ant Javac目标使用Eclipse中的不同JRE? - "java.lang.UnsupportedClassVersionError:不支持的major.minor版本51.0"

我正在尝试使用Ant脚本来构建我的Vaadin 6项目.当我手动构建和部署项目时,它(主要)工作,但是当我使用ant脚本时,我得到编译时错误.

我的蚂蚁目标看起来像这样:

<target name="build" depends="copyconfig" description="Compiles Java code to build directory">
    <javac destdir="build" includeantruntime="false"> <!-- Error here --> 
        <src path="src" />
        <src path="generated" />
        <src path="config" />
        <exclude name="**/*_Ex??.java" />
        <classpath refid="compile.classpath" />
    </javac>
</target>
Run Code Online (Sandbox Code Playgroud)

在日食中:windows-> preferences -> Java -> Installed JREs我指出:jdk1.7.0_03.在windows -> preferences -> Java -> Compiler我设定compiler complience level: 1.7

当我构建通过Project->Build project我没有错误,但当我通过ant脚本构建时,我得到: C:\vaadinSpikeWorkspace\DocumentManager\build.xml:55: java.lang.UnsupportedClassVersionError: com/sun/tools/javac/Main : Unsupported major.minor version 51.0

我假设我的蚂蚁脚本使用的是不同版本的编译器,这就是导致问题的原因(当我通过eclipse手动编译时不会出现这些问题).

但是,我认为JRE是向后兼容的:即如果我使用最新版本的JRE(1.7),我不应该遇到不同编译器版本的问题?

我们非常感谢您提供的任何帮助.

java eclipse ant

2
推荐指数
1
解决办法
5443
查看次数

如何将 XMLGregorianCalander 转换为 Epoch-Time 或其他固定整数?

是否有一个库可以让我轻松地将 java 类型 XMLGregorianCalander 转换为 Epoch 时间(自 01-01-1970 00:00:00 以来的秒数?)?或者任何其他固定整数?

如果没有,是否有一些简洁的样板代码可以做到这一点?这似乎是一个太常见的用例,无法从头开始编写......

非常感谢您的回答。

java

2
推荐指数
1
解决办法
2027
查看次数

如何捕获/查看浏览器在提交表单时生成的后请求?

因此,我正在开发的系统使用复杂的过程来生成和显示 HTML 表单,并使用更复杂的过程来处理提交后的这些表单。

我希望能够突破抽象概念,只以纯文本形式查看当我在表单上点击“提交”时浏览器生成的后请求 - 标头、有效负载、所有内容 - 我该怎么办这?如果有一个工具可以更轻松地进行选择,那就更好了,但如果我能以纯文本形式获取它也很好!

我意识到这似乎是一个非常基本的问题,但实际上我以前从未需要过它。

谢谢!

html forms

2
推荐指数
1
解决办法
1237
查看次数

javax.xml.soap.SOAPException:InputStream不代表有效的SOAP 1.1消息

我正在使用SOAP API。我收到的XML响应周围有一个“肥皂信封”-因此,在处理XML之前,我需要删除或解析该包装。我对其他端点采用了以下方法(至少代码是合理的),但是对于此特定端点,我会遇到错误。

我遇到的错误是:

严重:SAAJ0304:InputStream不代表有效的SOAP 1.1消息

这是我用来删除Soap Wrapper的代码:

String soapResponse = getSoapResponseFromApi();
ByteArrayInputStream inputStream = new ByteArrayInputStream(soapResponse.getBytes());
SOAPMessage message = MessageFactory.newInstance().createMessage(null, inputStream);
Document doc = message.getSOAPBody().extractContentAsDocument();   // <-- error thrown here


//unmarhsall the XML in 'doc' into an object
//do useful stuff with that object
Run Code Online (Sandbox Code Playgroud)

这是我收到的XML(上面代码中soapResponse的内容)

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <XMLContentIActuallyWant xmlns="http://my-url.com/webservices/">
            <!-- Useful stuff here -->
        </XMLContentIActuallyWant >
    </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

soap soap-client

2
推荐指数
1
解决办法
2784
查看次数

赋值运算符如何在Ruby中工作?

我在ruby中编写了一段简单的代码,但它并没有像我期望的那样工作.我认为这个问题来自于对ruby如何工作的误解,特别是相对于其他语言,赋值运算符的工作原理.这是我写的:

    @instance1 = @clock
    @clock.tick!
    @clock.tick!
    @clock.tick!
    @instance2 = @clock

    puts " instace1.seconds: #{@instance1.seconds}, instance2.seconds: #{@instance2.seconds}"
Run Code Online (Sandbox Code Playgroud)

'Clock'是一个类,有一个值,秒,一个方法'tick!' 它将秒增加1,方法'seconds'返回秒值.秒数被初始化为0.

现在,当我运行此代码时,输​​出为:"instace1.seconds:3,instance2.seconds:3"

但我期望的输出是:"instance1.seconds:0,instance2.seconds:3"

因为,我在更改时钟之前已经为intance分配了@clock所具有的值,之后我没有做任何修改@ instance1的事情.

对我来说,这意味着ruby在某些上下文中将对象指定为指针,并且存在隐式解除引用.这些背景是什么?(类变量?,大对象?)

如何明确分配?换句话说,我如何取消引用变量?

就像,在C中,我会做类似的事情:

*instance1 = *c
Run Code Online (Sandbox Code Playgroud)

(虽然从指针算术开始已经很长时间了,所以这是一个粗略的例子

ruby variable-assignment

0
推荐指数
1
解决办法
285
查看次数