我正在使用CXF 2.1从wsdl生成java代码,但是我收到以下错误:
WSDLToJava Error: Rpc/encoded wsdls are not supported in JAXWS 2.0
org.apache.cxf.tools.common.ToolException: Rpc/encoded wsdls are not supported in JAXWS 2.0
at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.checkSupported(JAXWSDefinitionBuilder.java:141)
at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.build(JAXWSDefinitionBuilder.java:87)
at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.build(JAXWSDefinitionBuilder.java:61)
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:127)
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:232)
at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:83)
at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:103)
at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:173)
Run Code Online (Sandbox Code Playgroud)
如何修复此错误,我可以使用以前版本的CXF或其他任何方法来修复它吗?
我正在一个分布式应用程序中的服务器上工作,该应用程序具有浏览器客户端,并且还参与与第三方的服务器到服务器通信.我的服务器有一个CA签名证书,让我的客户端使用HTTP/S和XMPP(安全)使用TLS(SSL)通信进行连接.这一切都很好.
现在我需要通过HTTPS/SSL使用JAX-WS安全地连接到第三方服务器.在此通信中,我的服务器在JAX-WS交互中充当客户端,并且我已经由第三方签署了客户端证书.
我尝试通过标准系统配置(-Djavax.net.ssl.keyStore=xyz)添加新的密钥库,但我的其他组件明显受此影响.虽然我的其他组件使用专用参数进行SSL配置(my.xmpp.keystore=xxx, my.xmpp.truststore=xxy, ...),但似乎他们最终使用全局SSLContext.(配置命名空间my.xmpp.似乎表示分离,但事实并非如此)
我也尝试将我的客户端证书添加到我的原始密钥库中,但是 - 我的其他组件似乎也不喜欢它.
我认为我唯一的选择是以编程方式挂钩到JAX-WS HTTPS配置,以便为客户端JAX-WS交互设置密钥库和信任库.
关于如何做到这一点的任何想法/指示?我找到的所有信息要么使用该javax.net.ssl.keyStore方法,要么设置全局SSLContext- 我猜 - 将最终在同一个confilc中.我得到的最接近的东西是这个旧的错误报告请求我需要的功能:添加支持将SSLContext传递给JAX-WS客户端运行时
任何需要?
使用生成的代码,是否wsimport可以覆盖服务端点而无需重新生成代码?
我写了一个简单的java webservice,以下是步骤:
wsimport http://localhost:8080/service/helloservice?Wsdl问题是服务是部署在8080以外的端口上运行的应用服务器上,客户端和服务之间的通信永远不会发生.我想知道在客户端使用的存根中创建没有服务器和端口硬编码的存根的最佳方法是什么.
我已经在一年中的大部分时间里使用了泽西,并且偶然发现了一个我无法找到答案的问题:你如何拦截(或挂钩)泽西岛请求生命周期?
理想情况下,我可以在容器接受来自网络的请求和调用处理程序方法的时间之间执行一些自定义过滤/验证/拒绝.如果有一种通过子路径过滤拦截器的简单方法(例如,对于/下的任何内容都有一个拦截器,对于/ user /下的任何东西,等等),可以获得奖励积分.
谢谢!
编辑:为了更清楚一点,这里的一般想法是能够编写一些将为许多API调用运行的代码,而无需从每个处理程序方法显式调用该代码.这将减少额外的代码并消除传递请求上下文的需要.
如何动态更改JAXWS客户端使用的地址?该客户端由wsimport生成.
双方<binding>并<portType>似乎定义操作和它的消息.我不太明白,为什么它们都是必要的?
在控制台模式下使用Apache CXF JaxWsServerFactoryBean时(尝试通过java命令行启动服务器)将获得如下异常:
Caused by: java.io.IOException: Cannot find any registered HttpDestinationFactory from the Bus.
at org.apache.cxf.transport.http.HTTPTransportFactory.getDestination(HTTPTransportFactory.java:295)
at org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:143)
at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:93)
at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:72)
at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:160)
Run Code Online (Sandbox Code Playgroud)
当通过Spring在Tomcat中使用相同的服务impl时,它可以工作.
<jaxws:endpoint id="abc" implementor="com.AbcServicePortTypeImpl" address="/abc">
Run Code Online (Sandbox Code Playgroud) 我是Web服务和RMI的新手,我想知道哪种是在不同的Web应用程序之间进行远程处理的更好方法,当这些应用程序都是用Java编写的时候,就是当不同的编程语言无关紧要时(这将是WS的优点).
虽然一方面我猜想在使用Web服务时有一个性能开销(有没有人有一些数字可以证明这一点?),另一方面,在我看来,Web服务更加松散耦合,可以用来实现更加面向服务的体系结构(SOA)(RMI无法实现,对吧?).
虽然这是一个非常普遍的问题,但你有什么看法?
谢谢
从java.net查看JAX-WS Maven存储库- http://download.java.net/maven/2/com/sun/xml/ws/
有两个相似的文件夹--jaxws-rt和jaxws-ri.目前,我正在使用jaxws-rt,它工作正常.
这是我的问题:
请指教.
谢谢.
我在Glassfish之上创建了一个JAX-WS Web服务,它需要基本的HTTP身份验证.
现在我想为该Web服务创建一个独立的Java应用程序客户端,但我不知道如何传递用户名和密码.
它适用于Eclipse的Web Service资源管理器,并检查我发现的电线:
POST /SnaProvisioning/SnaProvisioningV1_0 HTTP/1.1
Host: localhost:8080
Content-Type: text/xml; charset=utf-8
Content-Length: 311
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: IBM Web Services Explorer
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Authorization: Basic Z2VybWFuOmdlcm1hbg==
Connection: close
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ngin.ericsson.com/sna/types/v1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<q0:listServiceScripts/>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
如何使用java代码在此"Authorization"标头中传递用户名和密码?它是哈希还是类似的东西?算法是什么?
如果没有安全性,我有一个独立的java客户端:
SnaProvisioning myPort = new SnaProvisioning_Service().getSnaProvisioningV10Port();
myPort.listServiceScripts();
Run Code Online (Sandbox Code Playgroud)