Tag: jax ws

具有代理和Autentification的WS客户端

我知道这不是提出问题的正确方法,但我遇到了问题: 我有一个本地存储的wsdl,我需要创建一个Web服务客户端来调用该Web服务。 问题是服务是在防火墙后面,我必须通过代理连接到它,然后我必须validation连接到WS。 我所做的是使用Apache CXF 2.4.6生成WS客户端,然后设置系统范围的代理 System.getProperties().put(“proxySet”, “true”); System.getProperties().put(“https.proxyHost”, “10.10.10.10”); System.getProperties().put(“https.proxyPort”, “8080”); 我知道这不是最好的做法,所以请提出一个更好的解决方案,如果有人能给我一个关于如何设置认证的提示我真的很感激它

在jdk1.6中使用Endorsed目录的确切方法是什么

我想将我的jaxws升级到2.2(jdk1.6捆绑了jaxws 2.1)。 我的jdk是(我没有安装公共jre): java version “1.6.0_20” Java(TM) SE Runtime Environment (build 1.6.0_20-b02) Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode) 在jaxws自己的文档中,他们解释了如何做到这一点: 解决此问题的一种方法是将jaxws-api.jar和jaxb-api.jar复制到JRE支持的目录中,该目录是$JAVA_HOME/lib/endorsed (or $JDK_HOME/jre/lib/endorsed) 但我不确定这对我的安装有什么影响。 对于初学者我只定义了%JAVA_HOME% 。 文件夹$JAVA_HOME/lib/endorsed是不存在的,所以我创建并复制了两个jar。 但是,如果我这样做(wsgen是来自jaxws的工具) wsgen -version 我还是得到: JAX-WS RI 2.1.6 in JDK 6 我也尝试创建文件夹JAVA_HOME\jre\lib\endorsed (请注意,在文档中他们说JDK_HOME,但因为我只有JAVA_HOME我使用了这个路径)。 仍然是相同的wsgen输出。 我的问题是: doc页面中JAVA_HOME和JDK_HOME有什么区别? 什么重要或只有两种方式来引用JAVA_HOME? ‘wsgen -version’是检查所使用的jaxws版本的有效方法,或者它总是在原始jdk中调用exe,但它并不意味着将使用支持的jar? 有人知道在jdk.16中安装jaxws2.2的非常详细的步骤吗? 我发现这篇post对我所看到的内容有一些暗示

在JAXWS服务器端检索Soap Header

我们正在尝试在JAX Web服务中执行安全性实现,并在头部中传递UserName和Password,如下所示。 gears_user ########## 在Java中,我们正在尝试检索用户名和密码,但我们不确定如何将其作为Soap Header的一部分,我们之前没有检索过头信息。 ….. @Resource WebServiceContext wsctx; public ServiceAvailabilityResponseType inquireGeographicEligibility(ServiceAvailabilityRequestType inquireGeographicEligibilityRequest) throws WSException { HeaderList hl=(HeaderList)wsctx.getMessageContext().get(JAXWSProperties.INBOUND_HEADER_LIST_PROPERTY); QName security = new QName(“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd”, “Security”); Header hd = hl.get(security, false); QName userName = new QName(“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd”, “Username”); try { System.out.println(hd.readHeader()); System.out.println(hd.getAttribute(userName)); }catch (Exception e) { System.out.println(e.getMessage()); } } 我们正在尝试如上所述并获取标题元素,但它没有返回值。 任何有关检索用户名和密码的方法的帮助将不胜感激。

获取客户端的IP地址对于Web服务

我正在使用JAX-WS,我在检索使用Web服务的客户端信息时遇到问题。 我已经找到了如何使用JAX-RPC和Apache Tomcat Axis,但没有使用JAX-WS。 有没有人对此有所了解?

SOAP Web服务回调架构?

我对Web服务,JAX-WS等都很陌生,所以也许没有问题…… 所以,我想实现一个Web服务来使两个系统进行通信。 “客户端”系统对在“服务器”系统上生成的事件感兴趣。 但“客户端系统”本​​身就是一个不同应用程序的服务器。 服务器是Java(tomcat中的WAR)。 客户端是.Net。 应该只有一个客户端系统,但客户端系统中有几个客户端进程,每个客户端进程都对不同类别的事件感兴趣。 我将实现服务器端和测试客户端。 其他人将实现.Net代码。 运行顺序应该沿着这一行: 服务器正在运行…… 客户端启动对话,“注册”到服务器,并请求一些初始数据。 服务器保留已注册客户端的端点列表 在服务器中,有一个监听器在某些事件发生时得到通知。 然后,它将浏览已注册客户的列表,并将事件转发给每个客户 在某些时候,客户端可以“取消注册”不通知服务器它不再想要接收事件。 首先,它听起来像是合理可行吗? 是否有一个标准的内置机制,使用SOAP(服务器上的JAX-WS,无论客户端的.Net是什么) – 服务器可以用来从客户端获取回调端点? 例如,我使用RMI做了一些非常相似的事情,在这种情况下,客户端可以只向自己发送远程引用,服务器可以稍后存储ant引用。 最后,是否有一个标准库来存储端点引用,make(集体)回调,并且可能使列表保持最新,删除那些没有响应的客户端,以便进行一些“ping”调用? 注意清楚:我需要的不仅仅是带回调的异步方法:来自客户端的一条消息将从服务器到客户端生成许多回调消息。

Java 6 NTLM代理身份validation和HTTPS – 有没有人让它工作?

我有一个需要访问Web服务的Java应用程序(不是applet)。 已经使用JAX-WS生成了Web服务的代理,并且似乎工作正常。 在一种情况下,它需要通过Web代理服务器(实际上是Squid 3.0)进行通信,该服务器设置为需要NTLM身份validation。 在Sun的JRE 1.6.0_14上运行,一切都可以正常访问HTTP URL,而无需任何更改:内置的NTLM身份validation器启动,并且它都可以无效地运行。 但是,如果Web服务URL是HTTPS URL,则Web服务调用将在Sun的代码内部失败: com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.lang.NullPointerException at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:121) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:142) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:83) at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:105) at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587) at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546) at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531) at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428) at com.sun.xml.internal.ws.client.Stub.process(Stub.java:211) at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:124) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78) at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107) … our web service call … Caused by: java.lang.NullPointerException at sun.net.www.protocol.http.NTLMAuthentication.setHeaders(NTLMAuthentication.java:175) at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:1487) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:164) […]

Java JAX-WS Web服务客户端:如何记录日志请求和响应xml?

我创建了一个实现SOAPHandler的LoggingHandler实现 它应该在handleMessage触发时handleMessage (在我的情况下永远不会调用它) MyService service = new MyService(); MyServicePort port = service.getPortType(); 现在我试试这个: BindingProvider bindingProvider = (BindingProvider)port; bindingProvider.getBinding().getHandlerChain().add(new LoggingHandler()); 我没有看到任何请求/响应xml。 你能建议任何解决方案吗? 也许有另一种方式来查看输出和请求XML?

签署JAX-WS SOAP请求

我想编写一个JAX-WS Web服务,使用http://www.w3.org/TR/xmldsig-core/建议来签署我的SOAP消息。 通过我在互联网上找到的内容,我编写了一个JAX-WS处理程序( SOAPHandler ),它可以管理更改SOAP请求的副本: @Override public boolean handleMessage(SOAPMessageContext smc) { Boolean outboundProperty = (Boolean) smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); SOAPMessage message = smc.getMessage(); if (outboundProperty) { try { SOAPPart soapPart = message.getSOAPPart(); SOAPEnvelope soapEnvelope = soapPart.getEnvelope(); Source source = soapPart.getContent(); Node root = null; Document doc22 = null; if (source instanceof DOMSource) { root = ((DOMSource) source).getNode(); } […]

WebServices:裸vs包裹?

我从一些现有的wsdl中生成了一些WebServices 我使用Maven来做这个,但生成了一些web服务 @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) 和其他人一起 @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) Jaxb或xjc会自动执行此操作吗? 因为我在wsdls中没有任何差异……

jax-ws导入和定制包到命名空间映射

在使用jax-ws生成java工件时,如何自定义命名空间的包。 我正在通过maven运行jax-ws iwsmport。 我不想更改默认包,我希望能够从多个命名空间映射到不同的包。