我需要为后端使用旧式RPC /编码的WSDL Web服务.起初我尝试使用Apache CXF和JAX-WS,但JAX-WS wsimport工具不使用rpc/enoded WSDL.
[错误] JAXWS 2.0不支持rpc/encoded wsdls.
我也对使用JAX-RPC做这项工作有疑问,因为它已经过时了.Axis 1.4是5年的工具.
目前我看到这三个选项:
javax.xml.ws.Dispatch来发送和接收SOAP和某种方式解析它,一个例子这些都听起来不太好,所以如果你能提供一些好的线索,想要做什么以及如何解决它,我将不胜感激.
我写了2个webservices,一个使用Jax-WS,另一个使用Jax-RPC.他们只返回一个字符串.
我用jMeter对它进行了压力测试,奇怪的是,因此Jax-RPC的速度要快一些.
在性能方面(响应时间,CPU时间,堆),我何时真正从Jax-WS中获利?我该如何证明呢?
谢谢你的时间!=)
虽然这可能看起来像Java Web Services的副本,但我想知道从哪里开始并继续.过去,我花了很多时间来寻找从哪里开始,但我无法做到.在阅读有关Web服务的页面时,有这么多的术语和混乱(至少对我而言!).有很多术语 - 比如JAX-RPC, JAX-WS, Axis, Rest, Servlet as WebService, EJB'sWeb Service和其他我不知道的术语.此用户组是否可以整合并提供易于理解和遵循的Java Web服务的高级概述?感谢您的善意,感谢您的帮助.
我有Netbeans的问题.我已经从http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastStableBuild/artifact/nbbuild/nbms/updates.xml.gz安装了JAX-RPC Web服务.
但是,在安装插件后重新启动IDE后,Netbeans不会重新启动.
Netbeans的消息日志显示以下文本:
>Log Session: Wednesday, December 3, 2014 10:36:59 AM CST
>System Info:
Product Version = NetBeans IDE 7.4 (Build nbms-and-javadoc-2405-on-20141202) (#6523d6792981)
Operating System = Windows 8 version 6.2 running on amd64
Java; VM; Vendor = 1.7.0_67; Java HotSpot(TM) 64-Bit Server VM 24.65-b04; Oracle Corporation
Runtime = Java(TM) SE Runtime Environment 1.7.0_67-b01
Java Home = C:\Program Files\Java\jdk1.7.0_67\jre
System Locale; Encoding = es_SV (nb); Cp1252
Home Directory = C:\Users\Ghost
Current Directory = C:\Program Files\NetBeans 7.4
User Directory …Run Code Online (Sandbox Code Playgroud) Axis2还有其他选择吗?或者让它工作的方式(例如,不同的数据绑定)?
Retrieving document at '...'.
Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:271)
at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(SimpleDBExtension.java:53)
at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:224)
... 2 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(SimpleDBExtension.java:50)
... 3 more
Caused by: org.apache.axis2.schema.SchemaCompilationException: can not find type {http://schemas.xmlsoap.org/soap/encoding/}Array from the parent schema ... at org.apache.axis2.schema.SchemaCompiler.copyMetaInfoHierarchy(SchemaCompiler.java:1296)
at org.apache.axis2.schema.SchemaCompiler.processComplexContent(SchemaCompiler.java:1258)
at org.apache.axis2.schema.SchemaCompiler.processContentModel(SchemaCompiler.java:1153)
at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompiler.java:1097)
at org.apache.axis2.schema.SchemaCompiler.processNamedComplexSchemaType(SchemaCompiler.java:1017)
at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.java:931)
at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:766)
at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:552)
at org.apache.axis2.schema.SchemaCompiler.process(SchemaCompiler.java:1991)
at org.apache.axis2.schema.SchemaCompiler.processParticle(SchemaCompiler.java:1874)
at …Run Code Online (Sandbox Code Playgroud) 我正在使用Java 6来了解有关Web服务(JAX-WS)的更多信息.我还读到JAX-WS最新版本可用于Metro,即如果您不使用JDK6并计划使用JAX-WS,则可以使用Metro.
我想知道我的JDK附带了哪个版本的JAX-WS?我正在使用jdk1.6.0_22.
我正在使用一些遗留组件,我们使用一些使用JAXRPC-RI(参考实现)库构建的客户端代码与SOAP Web服务(我绝对,非常厌恶的技术)进行交互.
我有兴趣能够使用存根设置超时,以便万一Web服务器在X秒内没有回复,应用程序不会在那里永远等待响应.
我正在使用Apache Axis生成的客户端/存根,您只需使用它org.apache.axis.client.Stub.setTimeout()来设置超时.
对于我的生活,我无法弄清楚在使用JAXRPC-RI创建的存根时如何设置超时:
com.sun.xml.rpc.client.StubBase和实现javax.xml.rpc.Stub和com.sun.xml.rpc.spi.runtime.StubBase.stub._setProperty("axis.connection.timeout", 1000);会在运行时导致异常:javax.xml.rpc.JAXRPCException: Stub does not recognize property: axis.connection.timeout有没有人对使用JAXRPC-RI客户端时如何设置/强制执行超时有任何想法?它甚至可能吗?
我正在尝试生成新的Web服务客户端.当选择Client Style to JAX-RPC Style时,我会收到来自Netbeans的通知:"您必须下载JAX-RPC支持插件才能创建JAX-RPC客户端".
插件未在可用插件中列出.我搜索了有关此问题的主题,他们说要添加此地址以搜索可用的插件:
问题是,链接已经死了.有没有其他可能解决这个问题或有没有人有工作链接?
当我们从JAX-RPC迁移到JAX-WS时,我正在尝试调用使用JAX-W/JAXB的WebService.客户端本身仍在使用JAX-RPC.WSDL文件保持不变.
这样工作正常,因为没有附件.附件,它不起作用.客户说,没有.虽然可以在SOAP-Message中看到它们.
据我所知,JAX-WS确实使用MTOM将二进制数据放入消息中,而JAX-RPC使用MIME.
有可能以某种方式使这个工作?
以下是JAX-RPC消息的外观:
HTTP/1.1 200 OK
Date: Tue, 21 Dec 2010 15:24:10 GMT
Transfer-Encoding: chunked
Content-Type: multipart/related;boundary="----=_Part_6_5206227.1292945050584";type="text/xml";start="<soapPart>"
SOAPAction: "http://XXX"
X-Powered-By: Servlet/2.5 JSP/2.1
014a
------=_Part_6_5206227.1292945050584
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: 8bit
Content-ID: <soapPart>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><operationWithAttachments href="cid:operationWithAttachments"/></env:Body></env:Envelope>
0522
------=_Part_6_5206227.1292945050584
Content-Type: multipart/mixed;
boundary="----=_Part_5_12763436.1292945050570"
Content-ID: <operationWithAttachments>
------=_Part_5_12763436.1292945050570
Content-Type: application/pdf; name=HelloWorld.pdf
Content-Disposition: attachment; filename=HelloWorld.pdf
%PDF-1.4
%öäüß
1 0 obj
<<
/Type /Catalog
/Version /1.4
/Pages 2 0 R
>>
endobj
2 0 obj
<<
...
Run Code Online (Sandbox Code Playgroud)
这里是新的JAX-WS消息:
HTTP/1.1 200 OK
Date: Tue, 21 Dec 2010 …Run Code Online (Sandbox Code Playgroud) 我正在尝试向Axis 1.4 Web服务器添加自定义HTTP标头.
我创建了一个扩展BasicHandler的处理程序:
public class HttpHeaderHandler extends BasicHandler {
.
.
.
@Override
public void invoke(org.apache.axis.MessageContext arg0) throws AxisFault {
LOG.trace("invoke called");
Hashtable ht = (Hashtable)ctx.getProperty(HTTPConstants.RESPONSE_HEADERS);
if(ht == null) {
ht = new Hashtable();
}
ht.put("custom-header", "Hello");
ctx.setProperty(HTTPConstants.RESPONSE_HEADERS, ht);
}
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
我已将以下内容添加到server-config.wsdd:
.
.
.
<transport name="http">
<requestFlow>
<handler type="URLMapper" />
<handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
</requestFlow>
<responseFlow>
<handler type="java:com.my.package.HttpHeaderHandler" />
</responseFlow>
</transport>
.
.
.
Run Code Online (Sandbox Code Playgroud)
我可以看到正在调用invoke方法,因为日志文件出现在日志文件中,但自定义标头未添加到响应中.
任何建议赞赏.
jax-rpc ×10
java ×9
web-services ×6
jax-ws ×5
java-ee ×3
axis ×2
axis2 ×2
netbeans ×2
attachment ×1
cxf ×1
netbeans-6.9 ×1
plugins ×1
soap ×1
websphere-7 ×1
wsdl2java ×1