Tag: cxf

使用Apache CXF的WS-Security UsernameToken

我有一个与SOAP服务交互的java应用程序。 我使用WSDL通过CXF生成java客户端,但我需要使用ws-securityvalidation我的调用。 我正在寻找一种仅使用代码的方法,我没有任何xml配置。 这是我尝试过的: Map ctx = ((BindingProvider)port).getRequestContext(); ctx.put(“ws-security.username”, “joe”); ctx.put(“ws-security.password”, “joespassword”); port.makeSoapCall(); 但是我收到无效WS-Security标头的解析错误。 这样做的正确方法是什么? 在SOAP UI中,我可以通过右键单击soap标头,单击“Add WSS UsernameToken”,然后选择“Password Text”来轻松完成此操作。

CXF / JAX-RS:从拦截器返回自定义响应

在REST调用期间发生exception时,我们需要返回自定义错误代码和错误消息。 我们已经创建了一个exception映射器提供程序,它适用于应用程序代码中的exception。 但是,当从CXF代码发生exception时(例如,形成我编写的CustomValidationInterceptor),它不起作用。 例如,如果我请求无效路径参数(例如无效的phoneNumber)。 在这种情况下,我们需要以JSON格式返回自定义错误代码和错误消息,但即使我们创建了一个exception映射器提供程序来处理WebApplicationException,它也不起作用。 有没有办法处理来自cxf拦截器的exception并返回对用户的响应,如下所示? { “errorDetail”: { “errorCode”: “404”, “errorMessage”: “Bad Request” } } 我的CustomValidationInterceptor的代码片段: public class CustomValidationInterceptor extends AbstractPhaseInterceptor{ public CustomValidationInterceptor() { super(Phase.PRE_INVOKE); // Put this interceptor in this phase } public void handleMessage(Message message) { MetadataMap metadataMap = (MetadataMap) message.get(“jaxrs.template.parameters”); if(null != metadataMap) { List list = metadataMap.get(“phoneNumber”); if(null != list) […]

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的东西的实现。 请指出哪种情况,以及相关内容的通常链接。

如何为Apache-CXF JAX-WS启用Spring Security

如何在Apache-CXF上为apache JAX-WS启用Spring Security? Web上的示例包括Jax-RS示例,但我不使用Jax-RS。 我不想使用cxf的安全性。 如何在我的代码中实现它?

cxf-codegen-plugin不生成源代码

我正在尝试使用cxf-codegen-plugin从我的wsdl文件生成源代码。 在调用wsdl2java手册时,会生成所需的类,但在使用mvn generate-sources时没有任何反应,我收到消息“项目无需目标”。 直接调用插件没有帮助。 我朋友的提取物如下: org.apache.cxf cxf-codegen-plugin 2.5.2 generate-sources generate-sources ${project.build.directory}/generated/cxf ${basedir}/src/main/MyServiceInterface.wsdl wsdl2java

CXF使用内容过滤或屏蔽soap字段记录请求和响应

我想通过内容过滤记录来自某个特定端点的所有传入请求和响应。 即当我有这样的要求时: Apples Photo with some apples in it anVzdCBhIHJhbmRvbSB0ZXh0DQpqdXN0IGEgcmFuZG9tIHRleHQNCmp1c3QgYSByYW5kb20gdGV4dA0KanVzdCBhIHJhbmRvbSB0ZXh0DQpqdXN0IGEgcmFuZG9tIHRleHQNCmp1c3QgYSByYW5kb20gdGV4dA0KanVzdCBhIHJhbmRvbSB0ZXh0DQp3b3csIGkgZGlkbid0IHRob3VnaHQgdGhhdCBhbnlvbmUgd291bGQgYmUgaW50ZXJlc3RlZCBpbiBkZWNvZGluZyB0aGlzLiBjb25ncmF0cyE= 我想过滤它,以便它看起来像这样的日志 Apples Photo with some apples in it hidden 或完全删除m:照片元素。 我发现CXF有一些LoggingInInterceptor和LoggingOutInterceptor,我可以编写自己的拦截器来做到这一点。 然而,这将是一项工作要做,所以我的问题是:你知道更好,开箱即用的解决方案吗?

覆盖CXFerror handling

我正在开发一些基于Web服务的应用程序,我有一个关于Apache CXF解组的问题。 在我们的项目中,我们使用CXF 2.4.1版本。 当某些SOAP请求不正确时(例如某些字段是文本而不是数字),CXF会抛出标准的SOAPFaultException,并使用标准字段构建SOAP响应,例如: soap:Client Unmarshalling Error: some field missing 项目要求说,如果出现任何故障,系统需要以其他格式响应,例如: 2732 Unmarshalling Error: some field missing some details … 所以问题是:如何以某种方式覆盖此error handling并以我的格式响应,而不是默认? 提前致谢。 PS我试图调查一些ValidationEventHandler主体,但它在CXF 2.0及更高版本中以其他方式工作。

在CXF wsdl2java中设置Java合规性级别

我是CXF的新手,我正在尝试从WSDL创建一个客户端。 我过去使用过Metro和Axis。 我下载了apache-cxf-2.3.3并使用wsdl2java生成客户端存根。 我使用Maven并用它来设置我的pom: 2.3.3 org.apache.cxf cxf-rt-frontend-jaxws ${cxf.version} org.apache.cxf cxf-rt-transports-http ${cxf.version} org.apache.cxf cxf-rt-ws-security ${cxf.version} true org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 true true 当我构建项目时,我得到以下错误: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project client-cxf: Compilation failure: Compilation failure: [ERROR] \Devel\Projects\Client-CXF\src\main\java\my\webservice\ServiceRuntimeException.java:[38,149] cannot find symbol [ERROR] symbol : method required() 和 [ERROR] \Devel\Projects\Client-CXF\src\main\java\my\snmpv2\MyService.java:[76,8] cannot find symbol [ERROR] symbol : […]

没有弹簧的CXF

是否可以在没有Spring的情况下使用CXF和Tomcat? 如果是这样,怎么样?