天道酬勤,学无止境

cxf

WSEncryptBody/WSSignEnvelope: Element to encrypt/sign not found

问题 我正在尝试连接到安全的肥皂网络服务,它使用 x.509 证书身份验证。 我有 .p12 客户端密钥和 .pfx 服务器密钥。 请找到以下配置和代码。 我得到的错误是 - 未找到要加密/签名的元素:http://www.w3.org/2005/08/addressing, Action 我的POM; <groupId>test-pps-2</groupId> <artifactId>test-pps-2</artifactId> <version>1.0-SNAPSHOT</version> <properties> <cxf.version>2.6.0</cxf.version> <spring.version>3.2.4.RELEASE</spring.version> <wss4j.version>1.6.19</wss4j.version> </properties> <dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId>

2022-07-11 09:56:40    分类:技术分享    spring   web-services   soap   cxf   wss4j

Jax rs client pool

问题 我正在使用 jax-rs 2 客户端 API 设置 REST 客户端。 在 api 文档中它说“客户端是管理客户端通信基础设施的重量级对象。初始化和处置客户端实例可能是一项相当昂贵的操作。因此建议仅构建少量客户端应用程序中的实例。” (https://docs.oracle.com/javaee/7/api/javax/ws/rs/client/Client.html)。 根据这个声明,听起来客户端不是线程安全的,我不应该对所有请求使用单个客户端实例。 我正在使用 CXF 实现,到目前为止我还没有找到为客户端对象设置池的方法。 如果有人有任何信息,请您分享一下。 提前致谢。 回答1 默认情况下,CXF 使用基于 JDK 中的 HttpURLConnection 对象的传输来执行 HTTP 请求。 执行连接池允许持久连接为多个 http 请求重用底层套接字连接。 设置这些系统属性来配置池(默认值) http.keepalive=true http.maxConnections=5 增加 http.maxConnections 的值以设置每个目标同时保持活动的最大空闲连接数。 请在此链接中查看属性 properties.html 的完整列表 在这篇文章中详细解释了它是如何工作的 Java HttpURLConnection 和池化 另请注意,默认情况下,默认 JAX-RS

2022-05-14 14:59:28    分类:技术分享    client   jax-rs   cxf

getContext() method of CustomContextResolver is not called by Jackson

问题 我已经在这个问题上苦苦挣扎了好几天,不知道如何解决这个问题。 任何快速帮助将不胜感激。 我需要从使用 apache CXF 和 jackson 从 REST 服务构建中接收的 JSON 字符串转换 LocalDate。 我编写了自定义 ContextResolver 并在 Mapper 对象中注册了 JavaTimeModule。 当我运行应用程序时,默认构造函数被调用,这意味着它已经被加载,但是返回 ObjectMapper 的 getContext() 方法永远不会被调用。 我在服务器和客户端注册了相同的 ContextResolver。 所有依赖项都已就位(jackson databind、core、annotation、datatype-jsr310)。 当我直接在浏览器中点击 REST URI 时,我能够获取 JSON 响应。 当我从客户端代码调用相同的 URI 注释方法时出现问题下面是我的客户端代码。 import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature

2022-05-14 13:45:11    分类:技术分享    json   rest   jackson   cxf

JAX-RS DynamicFilter not being called for sub-resource

问题 根据文档,应该可以将 DynamicFeature 用于资源和子资源。 作为一种效果,我希望在调用子资源端点时注册和调用过滤器 - 即GET /some/sub/x 。 但是以下对我不起作用(也不是其他类似的方法): 注解@NameBinding @Target({METHOD, TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface SomeFilterAnn {} 资源@SomeFilterAnn @Path("/some") public class SomeResource { @GET public String getSome() { return "some"; } @Path("/sub") public SubResource getSub() { return new SubResource(); } @SomeFilterAnn @Path("/x") public static class SubResource { @GET public String getSome() { return "sub"; } } } 过滤器(实际上更复杂,由DynamicFilter配置) @SomeFilterAnn public class SomeFilter implements

2022-05-12 07:38:33    分类:技术分享    java   rest   jax-rs   cxf

Character Encoding in POST JSON Request

问题 我正在向我的应用程序发送一个 POST JSON 请求。 POST /CharSetTest/Test HTTP/1.1 Host: localhost:8090 Content-Type: application/json Cache-Control: no-cache Postman-Token: 1637b92b-5896-4765-63c5-d04ad73ea9f1 { "SampleRequest": { "FullName": "関連当" } } 我的 CXF JAXRS 消费者定义如下。 @POST @Produces("application/json; charset=UTF-8") @Consumes("application/json; charset=UTF-8") public Response testCharSet(@Encoded String jsonBody); 但我作为 POST 请求发送的日文字符(关连当)未编码,并导致一些垃圾字符“ é¢é£å½äºè ” 使用 SoapUI 会导致“??????” 人物。 这个垃圾字符因我点击请求的客户端而异。 我如何编码我的 POST 请求? 回答1 这里没有一个答案对我有用。 我的内容类型已设置为“application/json;charset=UTF-8”,但我的标头中的accept

2022-05-12 06:25:24    分类:技术分享    java   rest   jax-rs   cxf

How to use PATCH method in CXF

问题 我正在尝试使用 JAX-RS 的 CXF 实现在我的客户端中使用 PATCH 方法。 起初我将 PATCH 注释定义为 @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @HttpMethod("PATCH") public @interface PATCH { } 参考这里写的:How to have a @PATCH annotation for JAX-RS? 然后我发现@PATCH 已添加到 CXF 3.1.2 中,所以我在我的 maven 的 pom.xml 中更改了版本,并且package org.apache.cxf.jaxrs.ext;中确实有public @interface PATCH ; 并且代码实际上看起来与我上面发布的完全一样。 但是,当我尝试在我的服务定义上使用此注释时 @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public interface AbcService { @PATCH @Path("/abc/efg") public SomeDTO patchSomething(RequestObject request); } 我最终得到java.net

2022-05-11 17:50:05    分类:技术分享    java   rest   jax-rs   cxf   http-patch

CXF Bundles: Whats the difference?

问题 我正在使用 maven,但我不明白以下依赖项之间的区别: 1.) http://mvnrepository.com/artifact/org.apache.cxf/cxf-bundle/3.0.0-milestone2 2.) http://mvnrepository.com/artifact/org.apache.cxf/cxf-bundle-compatible/3.0.3 选项 2 似乎较新,但我可以使用它吗? 目前我使用“http://mvnrepository.com/artifact/org.apache.cxf/cxf-bundle/2.7.14”,但我想升级到 V. 3.xx 我还没有找到关于 cxf-bundle/3.0.0-milestone2 的任何信息,但也许有人知道,哪里可以找到关于这个的更多信息。 回答1

2022-05-10 07:35:04    分类:技术分享    apache   web-services   maven   cxf   ivy

How to generate SOAP 1.2 binding for wsdl using wsdl2java?

问题 我简述: 如何让 wsdl2java 生成 SOAP 1.2 绑定? 详细说明: 我使用wsdl2java工具(apache cxf 3.0.2)为 wsdl 生成了 java 服务类: MBA-Anton:bin asmirnov$ ./wsdl2java -server -catalog /tmp/wsdl/catalog -d /tmp/onvif/server http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl 然后我创建了服务代码并运行它,它正在运行: public static void main(String args[]) throws InterruptedException { System.out.println("Starting Server"); Endpoint.publish("udp://239.255.255.250:3702", new DiscoveryService()); System.out.println("Server ready..."); Thread.sleep(10 * 60 * 1000); // 10 min System.out.println("Server exiting"); System.exit(0); } 启动日志:

2022-05-09 17:26:03    分类:技术分享    xml   wsdl   cxf   wsdl2java   ws-discovery

Adding HTTP headers from the CXF service implementation

问题 我目前正在实施肥皂服务,我需要从另一个肥皂服务(服务 A)调用一个肥皂服务(服务 B)。 从服务 A,如何设置 HTTP 标头而不是向服务 B 发出的肥皂请求的 SOAP 标头。 目前我正在使用 JaxWsDynamicClientFactory 如下, JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); Client client = dcf.createClient(localhost/services/test?wsdl"); results = client.invoke(new QName(namespace,operation), service parameters); 回答1 JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); Client client = dcf.createClient(localhost/services/test?wsdl"); @SuppressWarnings("unchecked") Map<String, List<String>> headers = (Map<String, List<String>>) client

2022-05-09 05:21:21    分类:技术分享    java   web-services   soap   cxf   jax-ws

how to pass String including comma in CXF service method

问题 我正在使用camel cxf 组件来调用Web 服务。 我正在尝试传递带有逗号 (,) 的 XML 字符串。 当我尝试传递 XML 字符串时,它会抛出错误。 获取错误的参数大小调用out 服务,期望大小1,参数大小2。请检查消息体是否匹配CXFEndpoint POJO Dataformat 请求。 这是我的网络服务方法 public String sendSMSRequest( @WebParam(name = "clientRequestXML", targetNamespace = "http://www.openuri.org/") String clientRequestXML); 我在下面的 XML 字符串中作为 clientRequestXML 传递。 <BODY> <SCODE/> <SMSSERVICE> <SENDSMS_REQ> <TO> <CIFNUMBER>73</CIFNUMBER> <MOBILE>null</MOBILE> <LANG>2</LANG> <MESSAGE>Dear SCUST2, your id is 1112</MESSAGE> </TO> </SENDSMS_REQ> </SMSSERVICE> </BODY> 请帮我解决这个问题。 我想用逗号(,)发送字符串 回答1 Arrays.asList

2022-05-08 16:48:05    分类:技术分享    java   web-services   cxf