JAX-WS是为基于XML的Web服务定义Java API的JSR 224
带有大消息的 JAX-WS SoapHandler:OutOfMemoryError
使用 JAX-WS 2,我看到其他人也谈到过的一个问题。问题是,如果在处理程序内接收到 SOAP 消息,并且该 SOAP 消息很大 - 是否由于内联 SOAP ...
RESTEASY004655:无法调用请求:org.apache.http.NoHttpResponseException:host_url 无法响应
有时(随机发生,有时在一个请求之后,有时在 10 个请求之后)我的 Batch-Job 崩溃并出现以下异常: javax.ws.rs.ProcessingException:RESTEASY004655:无法调用
当 SOAPAction HTTP 标头为空字符串时,jaxws-ri 如何将 SOAP 请求路由到正确的方法?
我在 Tomcat 上使用 jaxws-ri,版本 2.3.2 我有带有一些 JAX-WS 注释的简单类: @WebService() 公开课测试{ @WebMethod() 公共字符串validateCard(字符串id){
我正在尝试向巴西政府端点发出肥皂请求,但遇到了一些麻烦。 他们提供以下 wsdl:https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeRecepcaoSinc/
我正在创建一个与 Web 服务通信的程序,该程序是用 JAX-WS 编写的。但是当我想创建 Web 服务的新实例时,出现以下错误: 严重:Servlet.servi...
将 jaxws-maven-plugin 从 Java 7 迁移到 Java 17
我在Java 7中使用这个配置 org.jvnet.jax-ws-commons jaxws-maven-插件 我在 Java 7 中使用此配置 <plugin> <groupId>org.jvnet.jax-ws-commons</groupId> <artifactId>jaxws-maven-plugin</artifactId> <version>2.3</version> <executions> <execution> <id>1</id> <goals> <goal>wsimport</goal> </goals> <configuration> <xadditionalHeaders>true</xadditionalHeaders> <executable>${tool.wsimport}</executable> <wsdlDirectory>src/main/resources/wsdl</wsdlDirectory> <target>2.1</target> </configuration> </execution> </executions> </plugin> 我必须将其迁移到 Java 17,更改版本后我收到这些错误 [WARNING] Failed to build parent project for com.sun.xml.ws:project:pom:2.2.8 Failed to build parent project for com.sun.xml.ws:project:pom:2.2.8 Failed to build parent project for com.sun.xml.ws:bundles:pom:2.2.8 Failed to build parent project for com.sun.xml.ws:jaxws-tools:pom:2.2.8 Invalid POM for com.sun.xml.ws:jaxws-tools:jar:2.2.8, transitive dependencies (if any) will not be available, enable debug logging for more details 我尝试使用 Java 11 迁移的解决方案进行迁移。但它们不起作用。我还尝试手动添加依赖项,下载 jars...但没有结果。我找不到 Java 17 的迁移指南。有帮助吗? 一定喜欢那些超级有用的专家消息。输出消息指示对应于 Java 8 的版本 2.2.8(com.sun.xml.bind:jaxb-core:jar:2.2.11 的 POM 无效,传递依赖项(如果有)将不会可用)。我的猜测是 org-jvnet-jax-ws-commons 与 JDK 17 根本不兼容,因此出现(无帮助的)maven 警告/错误。 参考: maven 无法执行目标 org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.3:wsimport 更换 <groupId>org.jvnet.jax-ws-commons</groupId> <artifactId>jaxws-maven-plugin</artifactId> <version>2.3</version> 与 <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-maven-plugin</artifactId> <version>4.0.1</version> 一旦我更改为 com.sun.xml.ws,错误就消失了。
同一 URL 上的多个 SOAP 服务(同一 URL 的不同版本)
我需要支持具有相同 URL 的多个版本的 SOAP 端点,这可能吗? Soap 类是从第三方 wsdl 生成的。 在 web.xml 我有: 我需要支持具有相同 URL 的多个版本的 SOAP 端点,这可能吗? Soap 类是从第三方 wsdl 生成的。 在 web.xml 中我有: <servlet> <servlet-name>soap</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>soap</servlet-name> <url-pattern>/soap/*</url-pattern> </servlet-mapping> 在我的 applicationContext.xml 中,我有以下内容: <wss:binding url="/soap/StuffService/"> <wss:service> <ws:service bean="#stuffV1"/> </wss:service> </wss:binding> <bean id="stuffV1" class="package.soap.StuffSoapEndpointV1"/> 我有一个java类: @WebService( portName = "BasicHttpBinding_IStuffService", serviceName = "StuffService", endpointInterface = "package.soap.stuff.IStuffService", targetNamespace = "http://stuff.example.org/Integration/Service/Outgoing/v1", wsdlLocation = "/WEB-INF/Integration.Service.Outgoing.v1.IStuff.wsdl") @ApiOperation(value = "Stuff Service") public class StuffSoapEndpointV1 implements IStuffService { 是否可以向同一网址添加第二个版本?类似以下内容: <wss:binding url="/soap/StuffService/"> <wss:service> <ws:service bean="#stuffV1"/> <ws:service bean="#stuffV2"/> </wss:service> </wss:binding> <bean id="stuffV1" class="package.soap.StuffSoapEndpointV1"/> <bean id="stuffV2" class="package.soap.StuffSoapEndpointV2"/> @WebService( portName = "BasicHttpBinding_IStuffService", serviceName = "StuffService", endpointInterface = "package.soap.stuff.IStuffService", targetNamespace = "http://stuff.example.org/Integration/Service/Outgoing/v2", wsdlLocation = "/WEB-INF/Integration.Service.Outgoing.v2.IStuff.wsdl") @ApiOperation(value = "Stuff Service") public class StuffSoapEndpointV2 implements IStuffService { 那是行不通的。不允许使用多个 ws:service 标记,对于具有相同 url 的 wss:service 和 wss:binding 也是如此。另外,我认为 portName 和 serviceName 组合应该是唯一的,但它们需要与不是来自我们的 wsdl 中的相同。 我为肥皂调用创建了自己的处理程序,类似于https://github.com/revinate/jaxws-spring/blob/master/jaxws-spring/src/main/java/com/sun/xml/ws/ Transport/http/servlet/WSSpringServlet.java 具有基本功能。它使用我自己的 WSServletDelegate。 <servlet> <servlet-name>soap</servlet-name> <servlet-class>my.application.soap.WSSpecialServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> 但是我添加了 WSServletDelegate,因此它可以读取绑定 url 的多个配置,并用双星号标记。 <wss:binding url="/soap/eventService/**"> <wss:service> <ws:service bean="#eventBeanV1"/> </wss:service> </wss:binding> <wss:binding url="/soap/eventService/**"> <wss:service> <ws:service bean="#eventBeanV2"/> </wss:service> </wss:binding> 当请求到达那些带有双星号的 url 时,WSServletDelegate 会将传入的 SOAPAction 标头与 beans 方法 Action 注释值进行比较,如果它们相同,则应使用该 bean。
我正在尝试在 Oracle Web 服务器上部署我的 jsp 站点,但是当我使用端口调用我的 Web 服务时,出现以下错误: 严重:SAAJ0120:当标头已存在时无法添加标头 这...
jax-ws 无法获取 wsdl,sun-jaxws.xml 可能是错误的?
我开发了第一个服务,效果很好。 现在我正在开发另一个类似的服务。 当我手动发布端点时,我可以浏览 wsdl。 但是当我将ear文件部署到...
为什么 Apache CXF 不尊重 'nil="true"'
我使用 Apache CXF 3.0.2 作为客户端和服务器。服务器上有一个相当简单的 Web 服务,它接受各种参数,其中之一是字符串数组: 我使用 Apache CXF 3.0.2 作为客户端和服务器。服务器上有一个相当简单的 Web 服务,它接受各种参数,其中之一是字符串数组: <xs:complexType name="getThing"> <xs:sequence> <xs:element minOccurs="0" name="connection" type="tns:connectionID"/> <xs:element maxOccurs="unbounded" minOccurs="0" name="types" type="xs:string"/> </xs:sequence> </xs:complexType> 当客户端调用它时,它可能希望为“类型”传递一个空值,这就是我遇到问题的地方。来自客户端的 SOAP 消息如下所示: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:getThing xmlns:ns2="http://serverl.url/"> <connection>Connection details....</connection> <types xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </ns2:getThing> </soap:Body> </soap:Envelope> 我认为这是正确的,但是服务器上的 CXF 将其转换为具有单个空字符串值的数组; 不是包含空值的数组。这会导致服务器代码出现各种问题。 服务端实现的接口是这样的? ThingResult getThing(@WebParam(name = "connection") ConnectionID connection, @WebParam(name = "types") String[] types) { code } 如果 'nil="true"' 无效,那么为什么 CXF 会生成它? 空数组可以正常工作(客户端省略消息中的元素,服务器将其解释为空),但包含空值的数组则不行。为什么 CXF 会出现这种情况?如何配置它以便服务器将 SOAP 消息正确反序列化回客户端发送的内容? 我到处寻找答案,并且相当确定我错过了一些非常明显的东西! 编辑:添加代码示例 该模式没有 types 元素的 nillable="true" 属性。 因此,xsi:nil="true" 不是该元素的有效值。 我找不到使 CXF 表现良好的方法(无论是在 WSDL 生成中还是在生成的 WSDL 的客户端方面)。 相反,我必须修改服务器代码以将空值和空字符串视为等效。 一些不需要的黑客攻击,但似乎有效。 steve666 在 Apache Mail Archives 中显示了一种解决方法,其中 SAAJOutInterceptor 用于允许自定义拦截器(即另一个 AbstractSoapInterceptor)根据 的存在来遍历所有元素并删除 nil 元素。 xsi:nil 属性。
尝试使用 JAXWS 将简单的 Web 服务绑定到 Spring bean,并且在我的应用程序上下文 xml 中读取 XSD 时出现错误
我尝试使用 JDK 1.7 绑定部署在 IBM WAS Liberty 8.5.5.4 上的已正常运行的 JAXWS Web 服务,但在根据 applicationContext.xml 绑定服务时出现以下错误。这是一个
我想记录 WS 通信的所有请求/响应数据。我必须异步进行日志记录(更多的是将数据转储到 RDBMS 中),以免影响 WS 通信的性能...
我在项目中使用 jaxws-spring 进行 Spring-JAX WS 集成。我当前的 xml 配置如下所示: 我在项目中使用 jaxws-spring 进行 Spring-JAX WS 集成。我当前的 xml 配置如下所示: <beans xmlns: "http://www.springframework.org/schema/beans" xmlns:ws="http://jax-ws.dev.java.net/spring/core" xmlns:wss="http://jax-ws.dev.java.net/spring/servlet" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="https://www.springframework.org/schema/beans" http://jax-ws.dev.java.net/spring/core http://jax-ws.dev.java.net/spring/core.xsd http://jax-ws.dev.java.net/spring/servlet http://jax-ws.dev.java.net/spring/servlet.xsd> ... ... <wss:binding url="/test/v1"> <wss:service> <ws:service bean="#userbean"> <ws:handlers> <ref bean="testHandler"/> </ws:handlers> </ws:service> </wss:service> </wss:binding> 现在,我正在尝试将应用程序从 Spring 4.x 和 Java 8 迁移到 Spring 6.1 和 Java 17,其中包括 javax -> jakarta 命名空间重构。 我的 pom.xml 文件已经包含 com.sun.xml.ws:jaxws-rt 但我相信在迁移到 Java 17 后我还需要添加 jakarta.xml.ws:jakarta.xml.ws-api 。 由于 jaxws-spring 不支持 jakarta 版本的 jaxws,我如何替换上面的命名空间和模式定义? i)我发现的一种方法是使用 Apache CXF 库,但我找不到上面需要进行的确切替换。任何参考都值得赞赏。 ii)如果我使用 apache CXF 实现,com.sun.xml.ws:jaxws-rt 和 org.apache.cxf:cxf-rt-frontend-jaxws 可以共存吗,即不会在运行时导致任何类路径问题? PS:我现在无法放弃基于 xml 的配置 @Mehul,你找到解决方案了吗
OpenLiberty:使用 server.xml 配置 JAX-WS 通信超时,例如连接超时、接收超时
我们正在 WebSphere Liberty (24.0.0.5) 上访问基于 SOAP 的 Web 服务(使用 JAX-WS),并正在寻找配置通信超时(例如连接超时、接收超时)的最佳方法...
如何使用 jax-ws 特定的 SOAP Web 服务更改 wsdl 中的属性
我正在阅读有关Web服务的内容,并且正在从jax-ws源代码创建wsdl,我能够完美地创建wsdl,我在请求中有很多输入,我需要设置minOccurs和maxOc...
在单元测试中模拟 ClientProxy.getClient() 时出现“不是代理实例”错误
我正在为使用 JaxWsProxyFactoryBean 创建代理并设置一些属性的方法编写单元测试。但是,我遇到了 java.lang.IllegalArgumentException: not a proxy insta...
如何在不设置系统范围属性的情况下使用 HTTP 代理来处理 JAX-WS 请求?
我有一个应用程序需要向 Internet 上的系统发出 SOAP 客户端请求,因此它需要通过我们的 HTTP 代理。 可以通过设置系统范围的值(例如 system
Wildfly 的 JAXWS 实现似乎忽略了 bindingProvider 属性 com.sun.xml.ws.transport.https.client.SSLSocketFactory
我的环境是 Maven 项目和 Wildfly (8.2.1) 作为应用程序服务器。我需要的是使用 SOAP 将传入的 REST 调用连接到第三方服务器。我需要 SSL 客户端身份验证;
搜索服务 jakarta.xml.ws.spi.Provider 时出错
我有一个使用 jakarta.xml.ws.spi.Provider 来访问 URL 的代码。 作为响应,我收到 jakarta.xml.ws.WebServiceException: Error while Searching for service [jakarta.xml.ws.spi.Provider]...
我设置了自定义WebFault异常,如下所示: @WebFault(name="WSFault", targetNamespace = "http://www.example.com/") 公共类 WSException 扩展异常 { 私有静态最终长