Tag: jax ws

如何从SOAP Logical Handler获取有效负载对象

我正在学习如何在JAX-WS SOAP Web服务中创建逻辑处理程序。 在这里,我试图获取有效载荷数据,并希望打印用于测试。 但是我遇到了问题。 这是我的LogincalHandler代码 public class HelloMessengerLogicalHandler implements LogicalHandler { public void close(MessageContext ctx) { } public boolean handleFault(LogicalMessageContext ctx) { return false; } public boolean handleMessage(LogicalMessageContext ctx) { Boolean outbound = (Boolean) ctx.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); if(outbound) { LogicalMessage message = ctx.getMessage(); //Source payload = message.getPayload(); JAXBContext jaxbContext; try { jaxbContext = JAXBContext.newInstance(Person.class); Object jaxbPayload […]

使用自定义X509KeyManager时,Java无法为SSL握手确定匹配的密码套件

我正在使用Java7和JAX-WS 2.2。 对于SOAP Web服务,我需要创建一个自定义X509KeyManager ,以便为JKS密钥库中的每个连接客户端找到正确的证书。 但是,我已经在努力让我的自定义密钥管理器运行。 到目前为止,我使用的是默认值(从初始化的KeyManagerFactory检索),它基本上可以工作 – 但当然它没有选择正确的证书。 所以第一个想法是创建一个自定义X509KeyManager ,它保存原始密钥管理器,只写出一些日志消息,但通常使用默认行为。 出于某种原因,根本不起作用。 无法建立SSL握手。 在ClientHello之后 ,日志显示以下错误: Allow unsafe renegotiation: false Allow legacy hello messages: true Is initial handshake: true Is secure renegotiation: false Thread-3, READ: TLSv1 Handshake, length = 149 *** ClientHello, TLSv1 RandomCookie: GMT: 1476877930 bytes = { 207, 226, 8, 128, 40, 207, 47, […]

从Java使用SharePoint Web服务时NTLM失败了吗?

我有一个Java客户端,它使用从JDK 6使用JAX-WS实现编写的SharePoint 2010标准Web服务(sitedata.asmx,permissions.asmx等)。 到目前为止,使用自定义Authenticator实现和Authenticator.setDefault(…)方法对NTLM进行Authenticator Authenticator.setDefault(…) 。 在仅具有一个SharePoint服务器的测试环境上运行时,它可以正常工作。 我可以使用WireShark查看所有NTLM协商。 但是,如果在具有多个服务器,硬件负载平衡和多个SharePoint备用访问映射的客户上运行,我会从Web服务调用中获取错误401未授权。 我没有机会使用WireShark来调试该环境。 我从Windows机器(在客户设置上)运行我的客户端,因此根据Java文档,它应该适用于NTLM。 此外,我使用SharePoint的默认URL来访问Web服务(而不是负载平衡的URL)。 运行客户端应用程序的计算机不是SharePoint服务器。 它具有配置了NTLM的Windows集成身份validation。 此外,由于SharePoint管理策略,我无法访问SharePoint管理中心或对配置(也不是IIS)进行任何更改。 我想问一下是否有人知道这个问题是什么? 希望如果有人知道如何解决它? 提前致谢。 编辑: 重要的是,在两种环境中都授予了相同的权限级别。

我如何忽略超类?

我正在尝试为java.util.logging api编写一个Web服务。 所以我编写了一个inheritance自LogRecord的类MyLogRecord。 我使用JAX-B注释注释了这个类,包括@XmlAccessorType(XmlAccessType.NONE)因此它会忽略未注释的字段和属性。 当我启动tomcat时,我得到的错误是java.util.logging.Level和其他java.util.logging类没有默认构造函数,但是我的注释方法都没有引用Level类或任何其他类java.util.logging类。 这些由父类引用。 我的子类拥有它需要定义的所有东西。 如何让JAX-B完全忽略父类? 更新:我发现了另一篇文章 ,建议修改父类。 这显然是不可能的,因为我正在扩展java.util类。 有没有办法在不修改超类的情况下做到这一点? Update2:我在java.net上发现了一个类似问题的线程 。 该线程产生了一个增强请求 ,该请求被标记为另一个问题的副本,从而产生了@XmlTransient注释。 对这些错误报告的评论让我相信这在目前的规范中是不可能的。

在ContainerResponseFilter中获得响应(JAX-RS 2)

我试图将此CORSfilter移植到JAX-RS 2。 但是,我没有看到如何从ContainerResponseContext获取Response对象(如在旧代码中),我在ContainerResponseFilter的重写方法中传递。 如果有一种更优雅的方式来使用JAX-RS 2进行CORS,那当然是首选。 提前致谢。

javac找不到符号构造函数Service

我正在借助这本Apache CXF Web服务开发书学习CXF,但是,本书中的一个示例项目甚至无法编译! 有问题的代码是第3章的contractfirst ,它不是拼写错误的问题,因为我使用从书籍支持网站下载的源代码逐字。 3个编译错误实际上指向一个问题: Chapter3\contractfirst\src\demo\order\OrderProcessService.java:52: cannot find symbol symbol: constructor Service(java.net.URL,javax.xml.namespace.QName,javax.xml.ws.WebServiceFeature[]) location: class javax.xml.ws.Service super(WSDL_LOCATION, SERVICE, features); ^ 在OrderProcessService.java文件中。 初步重新搜索表明这可能是JAX-WS 2.2与2.1的问题,但我不知道如何使这个基于ANT的编译环境“支持”JAX-WS 2.2。 我尝试在%JAVA_HOME%\lib\endorsed放置一个jaxws-api.jar ,我尝试将该jar添加到项目的库列表中但似乎没有任何帮助。 我没有使用Maven ,因此我甚至无法将其列为依赖项,并希望这将被神奇地解决。 知道怎么解决这个问题吗? 这样我可以构建这个非常简单的项目吗?

Java 7是包含JAX-WS实现还是仅包含API?

我被告知Java 7应该包含JAX-WS,这样我就不需要像Apache CXF那样的库。 但是, 官方文件说: 此版本包含用于XML处理的Java API(JAXP)1.4.5,支持用于XML绑定的Java体系结构(JAXB)2.2.3,并支持用于XML Web服务的Java API(JAX-WS)2.2.4。 此外, JAX-WS上的Eclipse页面说明了使用Apache CXF,Sun Metro或Apache Axis等实现。 我可以在JAX-WS上找到的每个示例/教程都使用像CXF或Metro这样的库集。 我在Eclipse中有一个项目,它在一个带有javax.jws.WebService批注的类上调用“Endpoint.publish(…)”。 下面引用的WSDL文件驻留在Eclipse之外。 这个项目运行(作为“Java应用程序”)与Apache CXF库包括。 一旦我删除它们(以及Eclipse对Apache CXF的引用),它就会崩溃并出现以下exception: com.sun.xml.internal.ws.server.ServerRtException: [failed to localize] cannot.load.wsdl(http://localhost:8081/wsdl/csw.wsdl) at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.getPrimaryWsdl(EndpointImpl.java:313) 所以要么我做错了,要么Apache提供JDK本身只有API的东西的实现。 请指出哪种情况,以及相关内容的通常链接。

更改JAX-WS服务URL

在创建JAX-WS Web服务时是否有可能更改Webservice URL? 自动URL是(在Glassfish 3上): http://// ,但我需要的是: http:////axis/services/ (因为它是从轴到JAX-WS的端口) 有没有办法告诉JAX-WS在哪里发布WS? 使用sun-jaxws.xml是没有选择的,因为它禁用了@ EJB / @Inject DI。

JAX-WS使用WS-Security和WS-Addressing来使用Web服务

我正在尝试使用JAX-WS(Metro)开发独立的Java Web服务客户端,该客户端使用带有用户名令牌身份validation的WS-Security(密码摘要,随机数和时间戳)和时间戳validation以及SSL上的WS-Addressing。 我必须使用的WSDL没有定义任何安全策略信息。 当WSDL不包含此信息时,我无法确切地知道如何添加此标头信息(正确的方法)。 我发现使用Metro的大多数示例都围绕着使用Netbeans从WSDL自动生成,这对我没有任何帮助。 我没有太多的清晰度或方向,已经研究过WSIT,XWSS等。 JBoss WS Metro看起来很有希望,但也有。 任何人都有这方面的经验或有关如何完成此任务的建议? 即使把我指向正确的方向也会有所帮助。 除了必须基于Java之外,我不限于特定技术。

使用jax-ws调用位于负载均衡器上的Web服务,返回http状态为302,但是当我使用SoapUI时它工作正常

当我使用jax-ws调用位于负载均衡器上的Web服务时,它会返回 服务器发送HTTP状态码302:暂时移动 然后失败,但是当我使用SoapUI时它工作正常。 有没有办法可以配置服务来正确处理这个问题? 我使用wsimport生成了webservice代码并进行调用 NotificationWebService service = new NotificationWebService(wsdlLocation, qName); NotificationWebServiceSoap serviceSoap = service.getNotificationWebServiceSoap(); String xmlString = serviceSoap.getRSAPublicKeyXMLString(); 我被困住了,我无法在任何地方找到解决方案,所以任何帮助都会受到赞赏。