Apache CXF使用前端编程API(如JAX-WS和JAX-RS)帮助您构建和开发服务。这些服务可以使用各种协议,例如SOAP,XML / HTTP,RESTful HTTP或CORBA,并可以在各种传输上工作,例如HTTP,JMS或JBI。
Apache CXF - 使用 HTTP 400 代码处理响应
我使用的是 SOAP 客户端,由 Apache CXF 框架生成。 我尝试连接的服务使用soap:Fault 消息处理业务错误。 我想解释这些按摩并处理...
如何在 CXF 中的 JAX-RS Restful Web 服务中接收 POST 正文中的 JSON 消息?
我正在尝试在 JAX-RS 之上使用 Apache-CXF 开发 REST 服务。对于初学者,我有一个名为 test 的方法,它接收 String 消息和 int 值。我希望客户能够通过
无法加载扩展类org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl
我正在为 cxf 配置的类上运行 junit。我收到这个错误 导致:org.apache.cxf.bus.extension.ExtensionException:无法加载扩展类org.apache.cxf.ws.policy。
错误日志记录问题:使用带有 log4j2 的 cxf-jaxrs 的 java Restful 应用程序在迁移 cxf 后未将错误和异常堆栈跟踪打印到文件
在我们的 Spring Java 应用程序中尝试升级 cxf 和 log4j2 版本后; cxf 从 2 -> 3.1 & log4j 1.x -> 2.x;日志记录已损坏。滚动文件附加器和 smtp 附加器可以...
用于 Microsoft WCF 服务的 Apache CXF 客户端,MTOM 返回 400
我有一个用于 Microsoft WCF 服务的 apache CXF 客户端,并且我正在尝试通过 MTOM 发送文件。但是,我不断收到 400,根据合作伙伴的说法,WCF 端的错误是...
我正在使用 Spring Framework RestTemplate 获取字节数组。 但我还需要获取所获取结果的媒体类型。 该字节数组的媒体类型可以是任何类型。 使用的代码...
jakarta.servlet.ServletException:应在 org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet 中至少指定一个资源类
尝试升级到corretto-Java17、Tomcat 10.1.16/10.1.17。我已将所有 javax 包移至 jakarta 包,将 spring 升级到版本 6,将 cxf 升级到版本 4。当我在
如何使用 XML 配置和 JaxWsProxyFactoryBean 增加 Apache CXF 超时?
我正在使用 JAX-WS 的 apache CXF 实现。 我的 Web 服务是使用 JaxWsProxyFactoryBean 通过 spring xml 配置进行配置的: 我正在使用 apache CXF 实现 JAX-WS。 我的 Web 服务是通过 spring xml 配置使用 JaxWsProxyFactoryBean: 进行配置的 <bean id="myWSClient" class="my.package.MyWSClient" factory-bean="clientFactory" factory-method="create" /> <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property name="serviceClass" value="my.package.MyWSClient"/> <property name="address" value="http://some.url"/> </bean> 然后我通过以下方式注入它: @Resource(name = "myWSClient") MyWSClient myWSClient; 如何设法增加 MyWSClient 的timeout? 要使用 spring configuration 配置客户端超时,请使用以下命令: <http-conf:conduit name="*.http-conduit"> <http-conf:client ConnectionTimeout="600000" ReceiveTimeout="600000"/> </http-conf:conduit> 在此示例中,响应和连接超时设置为 600 秒。 参考: Apache CXF:客户端 HTTP 传输:高级配置 您可以在 xml 配置中添加属性 javax.xml.ws.client.receiveTimeout。值以毫秒为单位。 300000 毫秒 = 5 分钟 <bean id="serviceServiceFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property name="serviceClass" value="pl.service.YourService"/> <property name="address" value="http://address:port/ws/YourService"/> <property name="properties"> <map> <entry key="javax.xml.ws.client.receiveTimeout"><value>300000</value></entry> </map> </property> </bean>
生成 java WSDL 客户端时,我收到这些错误。你能帮我理解这些吗? C:\Users\Administrator\workspace pache-cxf-3.0.2 in > wsdl2java https://example.com/V1/
Onvif - 解析来自 WS-BaseNotification 的事件通知
我目前正在为 Onvif 实现一个事件处理程序。但我对 WS-BaseNotification 的解组过程完全迷失了。 我如何理解/解析NotificationMessageHolderT...
使用 org.apache.cxf cxf-codegen-插件 在一个新项目中,使用 v3.6.2 生成的客户端 java 类...
我正在使用 Apache-cxf (JAX-RS) 和 spring 框架。我的 beans.xml 中有以下示例代码。 我正在使用 Apache-cxf (JAX-RS) 和 spring 框架。我的 beans.xml 中有以下示例代码。 <jaxrs:server id="services" address="${http.server}"> <jaxrs:properties> <entry key="attachment-max-size" value="1024" /> </jaxrs:properties> <jaxrs:serviceBeans> <bean id="mainResource" class="com.abc.rest.api.MainResource"> <lookup-method name="createEmployeeCollectionResource" bean="employeeCollectionResource" /> </bean> ... ...other beans ... </jaxrs:serviceBeans> </jaxrs:server> 我还有以下代码 <bean id="employeeCollectionResource" class="com.abc.rest.services.EmployeeCollectionResourceImpl"> <lookup-method name="createNewEmployeeResource" bean="employeeResource" /> </bean> <bean id="employeeResource" scope="prototype" class="com.abc.rest.services.EmployeeResourceImpl"> </bean> 我已将所有服务的上传期间最大文件大小设置为 1KB。 如何限制 attachment-max-size 特别适用于少数豆类?示例 - 5MB 用于少数豆子,2MB 用于其他少数豆等 您必须将端点/资源组织在单独的 <jaxrs:server > 标签中,并使用自己的附件大小设置: <jaxrs:server id="services"> <jaxrs:properties> <entry key="attachment-max-size" value="1024" /> </jaxrs:properties> .... </jaxrs:server> <jaxrs:server id="largeFileServices"> <jaxrs:properties> <entry key="attachment-max-size" value="1000000" /> </jaxrs:properties> .... </jaxrs:server> https://cxf.apache.org/docs/jax-rs-multiparts.html
我与物理设备有一个长期运行的 CXF SOAP 连接。随着时间的推移,我看到 org.apache.cxf.ws.addressing.soap.MAPCodec 对象保留堆。看来 ConcurrentHashpMap
部署在 Weblogic 12c 中时的 CXF 客户端更改请求
我在weblogic 12c中部署CXF客户端时遇到问题。 如果我使用 jetty 运行客户端,我没有问题,这是请求: 我在 weblogic 12c 中部署 CXF 客户端时遇到问题。 如果我用jetty运行客户端,我没有问题,这就是请求: <soap:Body> <ns2:getSegmento xmlns:ns2="http://api.service.web.dummy.com/" xmlns:ns3="http://model.api.dummy.com"> <descripcionSegmento>EXTG</descripcionSegmento> </ns2:getSegmento> 但是weblogic中的同一个客户端生成了这个请求: <env:Body> <getSegmento xmlns="http://api.service.web.dummy.com/" xmlns:ns3="http://model.api.dummy.com" xmlns:ns2="http://api.service.web.dummy.com/"> <descripcionSegmento>EXTG</descripcionSegmento> </getSegmento> 我注意到 weblogic 中缺少名称空间,也许是有关依赖项的问题? 依赖关系: org.apache.cxf:cxf-rt-frontend-jaxws:3.1.9 org.apache.cxf:cxf-rt-transports-http:3.1.9 org.apache.cxf:cxf-rt-databinding-aegis:3.1.9 org.apache.cxf:cxf-rt-bindings-corba:3.1.9 org.apache.cxf:cxf-rt-transports-jms:3.1.9 org.apache.cxf:cxf-rt-ws-security:3.1.9 Weblogic配置: <prefer-application-packages> <package-name>antlr.*</package-name> <package-name>javax.servlet.jsp.jstl.*</package-name> <package-name>javax.wsdl.*</package-name> <package-name>org.antlr.*</package-name> <package-name>org.aopalliance.*</package-name> <package-name>org.apache.*</package-name> <package-name>org.apache.xerces.*</package-name> <package-name>org.aspectj.*</package-name> <package-name>org.hibernate.*</package-name> <package-name>org.mozilla.*</package-name> <package-name>org.slf4j.*</package-name> <package-name>org.springframework.*</package-name> </prefer-application-packages> 我在带有 weblogic 请求的服务中遇到此错误: Root cause of ServletException. javax.xml.ws.soap.SOAPFaultException: Unmarshalling Error: unexpected element (uri:"http://api.service.web.dummy.com/", local:"descripcionSegmento"). Expected elements are <{}descripcionSegmento> 请提供任何想法/帮助,我们将不胜感激 我确实遇到了这个问题,我尝试了以下方法但没有帮助: 在 weblogic.xml 和/或 weblogic-application.xml 中将 wls:prefer-web-inf-classes 更改为 true/false 在 weblogic-application.xml 的 wls:prefer-application-packages 中添加了依赖项 将cxf版本更改为最新版本 我最终编写了拦截器来替换 body 下的整个“getSegmento”元素,如下所示: import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPMessage; import org.apache.cxf.binding.soap.SoapMessage; import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor; import org.apache.cxf.interceptor.Fault; import org.apache.cxf.message.Message; import org.apache.cxf.phase.AbstractPhaseInterceptor; import org.apache.cxf.phase.Phase; import org.apache.cxf.phase.PhaseInterceptor; import org.w3c.dom.Element; public class MyRequestInterceptor extends AbstractPhaseInterceptor<SoapMessage> { private List<PhaseInterceptor<? extends Message>> extras = new ArrayList<PhaseInterceptor<? extends Message>>(1); public MyRequestInterceptor() { super(Phase.USER_PROTOCOL); extras.add(new SAAJOutInterceptor()); } public Collection<PhaseInterceptor<? extends Message>> getAdditionalInterceptors() { return extras; } public void handleMessage(SoapMessage message) throws Fault { SOAPMessage msg = message.getContent(SOAPMessage.class); try { SOAPBody e = msg.getSOAPBody(); Element actionElement = msg.getSOAPPart().createElementNS("http://api.service.web.dummy.com/", "ns2:getSegmento"); actionElement.appendChild(e.getFirstChild().getFirstChild()); e.replaceChild(actionElement, e.getFirstChild()); } catch (Exception e) { throw new Fault(e); } } } 并在客户端创建过程中添加了这个拦截器: JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(serviceInterfaceClass); factory.setAddress(endpoint); MyRequestInterceptor interceptr = new MyRequestInterceptor(); factory.getOutInterceptors().add(interceptr); 如果应用程序是企业应用程序(ear),则在 weblogic-application.xml 中添加以下标签 <prefer-application-packages> <package-name>org.apache.cxf.*</package-name> </prefer-application-packages> 如果应用程序是 web-application(war),则在 weblogic.xml 中添加上述行 Preferred-application-packages 元素指定必须始终从应用程序加载的类的包列表。 请参考https://docs.oracle.com/cd/E24329_01/web.1211/e21049/weblogic_xml.htm#WBAPP663 我在 weblogic 12.2.1.4 v.cxf 中遇到了同样的问题,这是由于在父元素中添加了默认 ns 引起的,这可以通过排除 jaxb/xml 绑定依赖项来解决:- <properties> <cxf.version>3.5.7</cxf.version> </properties> <dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf.version}</version> <exclusions> <exclusion> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> </exclusion> <exclusion> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
java.lang.IllegalStateException 没有 Jetty ContextHandler,Jetty WebSocket SCI 不可用
我正在尝试使用以下方式部署 SOAP-Web 服务: 雄猫10 阿帕奇CXF 4.0.2 Java JDK 17.0.6 该服务在 Tomcat 7.0.27、Java JDK 1.7.45 和 Apache CXF 3.0.2 上运行良好。 全部更改后
org.apache.cxf.ws.policy.PolicyException:没有任何策略选择可以得到满足
我想使用 JUnit 和 Apache CXF 编写一个简单的集成测试来测试一些支持 WS-Security 的服务。当我尝试运行我的代码时: MyService myService = new myWsService(MY_SERVICE_WS...
Quarkus CXF WSDL FileNotFound 异常在 AKS 上运行
在本地可以正常工作,但在服务器上却不行。这是错误日志: 导致:java.io.FileNotFoundException:/home/vsts/work/1/s/src/main/resources/checkVatService.wsdl(没有这样的文件或可怕...
这是我的LogUtils类的代码。我用它来格式化我的日志行。但它在那里打印了不正确的类名。如何修复它。? 导入 org.apache.commons.lang.StringUtils; 导入 org.apache.cx...
maven-cxf-codegen-plugin 使用 Jaxb 绑定为所有生成的类添加继承
我正在使用 Apache CXF 的 cxf-codegen-plugin 将 wsdl 转换为 java 对象。我指定了一个绑定文件来添加额外的 jaxb 处理。我希望所有这些文件都从接口继承(或
CXF TLSClientParameters setDisableCNCheck true 不起作用
我正在使用 CXF 2.7.3,并且想要禁用 CN 检查代码: TLSClientParameters tlsParams = 管道.getTlsClientParameters(); if (tlsParams == null) { tlsParams = 新的 TLSClientParameter...