Tag: cxf

Apache Camel根据请求丰富了包含文件内容的消息

我正在实现RESTful服务(使用CXFRS组件),它应返回某些请求的文件。 每个文件都由其id和扩展名提取,即restfulservice.com/path/file/1/pdf 。 添加的每个文件永远不会更改。 提取后不应移动或删除文件,通常应同时访问它们。 这是我的Camel上下文的一部分: from(“direct:fetchFile”) .process(fetchFileProcessor) // set file.id & file.extension .bean(fileService, “fetchFile(${header.file.id}, ${header.file.extension})”) // set body to filename .setHeader(“CamelFileName”, simple(“${body}”)) .choice() .when(header(“file.extension”).isEqualTo(“xml”)) .pollEnrich(“file:///{{application.fileStorage.basePath}}/xml?noop=true”, 500) .when(header(“file.extension”).isEqualTo(“pdf”)) .pollEnrich(“file:///{{application.fileStorage.basePath}}/pdf?noop=true”, 500) .end() .convertBodyTo(File.class) .bean(responseProvider, “getResponse(${body}, 200)”); 此配置的问题是响应仅为第二个(为什么?)请求具有非空主体,没有超时设置服务在第二个请求上使用调试消息进入永久循环 DEBUG oaccfFileConsumer – Took 0.000 seconds to poll \xml Apace Camel版本是2.10.4 任何帮助,将不胜感激 UPD1 : Content Enricher页面上有警告,说’pollEnrich不访问当前Exchange中的任何数据’。 但是如果我将fileName=${body}到文件URL,则没有任何变化 UPD2 : […]

为什么我会出现握手失败(Java SSL)

我正在通过HTTPS连接到Web服务。 我已经完成了我认为使其工作所需的所有内容,但最终我得到了握手失败。 我发现作为一个新用户,我不能发布超过2个链接,因为“垃圾邮件保护” – 比很多堆栈溢出…无论如何这里是一个链接到一个所有链接拼写的pastebinpost…所以当我在这里写了“链接#1”,它是对这些链接的引用: http : //pastebin.com/y4zGNRC7 我使用HttpClient(服务URL上的GET)validation了相同的行为,并实际通过CXF代理调用Web服务 我正在设置密钥库和信任库 – 我尝试了“in code”方式(链接#1)和设置系统属性 – 即System.setProperty(“javax.net.ssl.keyStore”,“mykeystore.jks” ); SSL调试已启用(javax.net.debug = all) SSL调试脱口而出密钥库和信任库的内容(即看起来像java“了解它们”) – 链接#2 似乎有一些客户端 – 服务器通信正在进行,但随后由于某种原因链接#3崩溃 我在浏览器(Chrome)中使用客户端和CA证书并使用openssl s_client成功连接到服务器 wireshark显示较少的客户端 – 服务器通话来自java(链接#4),然后例如来自Chrome(链接#5) 另一个奇怪的事情是,当我设置密钥库时我似乎得到了相同的行为,而当我没有设置密钥库时(唯一的区别是当我在控制台中打印密钥库内容时,但就是这样)。 我试过谷歌搜索问题,我在stackoverflow上看到了很多类似的post,但没有任何帮助。 我尝试更改协议版本(“TLSv1”,“SSLv3”,甚至是奇怪的v2 Hello)。 任何帮助将不胜感激 – 也许我可能忽略了一些基本的东西…我在这里绝望… Thanx PS我在Fedora Core 15(64位)上运行java 1.6 update 30

使用wsdl2java / Apache CXF生成Web服务代理类

我正在尝试使用Apache CXF附带的wsdl2java工具生成Web服务代理。 生成本身似乎很好,但生成的文件中有一些错误,调用一个不存在的构造函数。 该文件提供了一个解决方案 //This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2 //API jar or re-run wsdl2java with “-frontend jaxws21” to generate JAX-WS 2.1 //compliant code instead. 所以我开始下载并安装2.2版本的JAX-WS Api。 我找到了以下安装手册,解释了如何认可这些新文件: http : //dcx.sybase.com/1200/en/dbprogramming/httpserver-jaxws-lesson-two.html我按照本指南的每一步,删除了旧文件生成的文件和生成的新文件,但问题仍然存在。 任何提示和/或技巧? (现在当然,我正在使用-frontend jaxws21标志来生成代理,但仍然如此)。

是否可以使用CXF生成可序列化的类?

我正在使用Apache CXF从WSDL文件生成类,但它们不实现将对象放入JMS队列所需的Serializable。 是否可以这样做或者我必须将生成的类转换为我自己的类并发送它们?

使用Apache CXF的Web服务响应显示“无绑定操作信息…”

问题描述可能很长。 请耐心等待并提供任何帮助,因为我不熟悉Web服务。 我做了什么:我使用Apache CXF RI在java中创建了一个Web服务。 我只是创建了一个类,并使用自下而上的开发方法来生成SEI,WSDL和XML文件。 问题是:现在,如果我请求“ http://localhost:8084/DeepThoughtWS/services/DeepThoughtPort/whatIsTheAnswer ”,它会在调用未知方法的未知方法时生成输出为无绑定操作信息。 答复如下: soap:Server No binding operation info while invoking unknown method with params unknown. 生成的WSDL是: DeepThought课程包括: @WebService(targetNamespace = “http://ws.service.com/”, portName = “DeepThoughtPort”, serviceName = “DeepThoughtService”) public class DeepThought { public String whatIsTheAnswer(@WebParam(name = “arg0”) String interviewer) { return (“The answer ” + interviewer); } } 请求时控制台输出也显示一些错误: Feb […]

Apache CXF在Web服务上的命名空间问题

我正在使用Apache CXF 2.7.3,并遇到一个我真的不明白的命名空间问题。 我已经尝试过广泛搜索,但我发现的大部分结果都是针对不同的行为。 问题是在调用Web服务时,如果参数元素是名称空间限定的,它将失败。 消息中的所有其他元素都是合格的,它接受它,而不是参数元素。 这是精确的行为: 请求WITHOUT参数元素限定: a 取得成功: ABC123 Smith 请求WITH参数限定: a 导致JAXBexception: soap:Client Unmarshalling Error: unexpected element (uri:”http://www.example.org/order”, local:”id”). Expected elements are <{}id> 在我所做的所有研究中,这通常意味着命名空间在某处不匹配。 但我已经彻底检查了它,并且命名空间在任何地方都是相同的,包括ObjectFactory.class,package-info.class和cxf-servlet.xml配置文件以及@WebService注释。 任何人都可以指出我正确的方向,我在这里缺少什么?

SSL通信中的Apache CXFexception:SocketTimeOut

所以这是交易。 我有一个Web服务WSDL,我需要在公司网络之外进行SOAP调用。 Web服务是HTTPS SOAP,需要客户端证书。 我用wsdl2java用Java生成了客户端代码,事情看起来很顺利。 我现在不能做的是通过CXF从Web服务收到回复。 SSL握手似乎只是花花公子甚至达到了CXF尝试进行HTTP POST的程度,但是超时等待响应(如下所示): Allow unsafe renegotiation: false Allow legacy hello messages: true Is initial handshake: false Is secure renegotiation: false *** HelloRequest (empty) main, SEND TLSv1 ALERT: warning, description = no_renegotiation Padded plaintext before ENCRYPTION: len = 24 0000: 01 64 01 FD 5B 38 03 A6 70 41 57 […]

如何使用Apache CXF表示没有时区的日期?

我有一个WSDL,它指定一个元素的类型为xs:date。 当我使用Apache CXF生成Java类时,它将变量呈现为javax.xml.datatype.XMLGregorianCalendar(到目前为止一切都很好)。 当CXF呈现包含此文档的XML文档时,它将以此forms呈现它(其中-06:00表示时区): 2000-01-18-06:00 如何配置CXF不渲染时区?

是否可以使用JAX-RS设置ETag而无需使用Response对象?

在我发现的关于JAX-RS和缓存的少数问题(有答案)之一中 ,生成ETag(用于缓存)的答案是在Response对象上设置一些值。 如下所示: @GET @Path(“/person/{id}”) public Response getPerson(@PathParam(“id”) String name, @Context Request request){ Person person = _dao.getPerson(name); if (person == null) { return Response.noContent().build(); } EntityTag eTag = new EntityTag(person.getUUID() + “-” + person.getVersion()); CacheControl cc = new CacheControl(); cc.setMaxAge(600); ResponseBuilder builder = request.evaluatePreconditions(person.getUpdated(), eTag); if (builder == null) { builder = Response.ok(person); } return […]

Web服务可以返回流吗?

我一直在写一个小应用程序,让人们上传和下载文件给我。 我已经为这个applciation添加了一个Web服务来提供上传/下载function,但是我不太确定我的实现将如何处理大文件。 目前,上传和下载方法的定义如下所示(使用Apache CXF编写): boolean uploadFile(@WebParam(name = “username”) String username, @WebParam(name = “password”) String password, @WebParam(name = “filename”) String filename, @WebParam(name = “fileContents”) byte[] fileContents) throws UploadException, LoginException; byte[] downloadFile(@WebParam(name = “username”) String username, @WebParam(name = “password”) String password, @WebParam(name = “filename”) String filename) throws DownloadException, LoginException; 因此文件作为字节数组上传和下载。 但是,如果我有一个愚蠢的大小(例如1GB)的文件肯定会尝试将所有信息放入内存并使我的服务崩溃。 所以我的问题是 – 是否有可能返回某种流? 我想这不会是非常独立的操作系统。 虽然我知道Web服务背后的理论,但实际的一面是我还需要了解一些信息。 为任何输入干杯,李