Tag: web services

在weblogic中使用Jersey接收RestFul Web服务方法的重复调用

我有使用jersey-bundle(1.1.1,1.17.1)开发的RestFul Web服务方法,并部署到weblogic服务器10.3.4.0。 当客户端发出一些电话时,我会收到重复的电话。 当我实际制作一个时,我的rest服务会被调用两次。 我使用wireshark捕获了一些网络日志,发现只要服务器发送了stats [RST,ACK]就会发生这种情况。 服务器为客户端的某些呼叫发回[RST]的原因是什么?

Apache CXF Web服务问题

我有一个使用Maven的多模块项目。 在其中一个模块中,我有几个使用Apache CXF Framework 2.5.4开发的Web服务。 目前我有两个“问题”或问题。 首先,如果我调用一个应该返回List的Web服务的方法,如果列表为空,则返回“null”而不是空列表。 我试图找出可能是什么问题,如果它是我正在使用的CXF版本的错误,或者我应该使用一些注释来修改方法或响应的定义,但我找不到任何东西。 我见过一些人有同样的问题,但没有解决方案。 我想问的另一件事是:我正在使用MVC模式开发一个Web应用程序。 我想知道我应该从Controller调用Web服务的方式,而不是使用ClasspathXmlCpplicationContext然后使用context.getBean()。 例如,客户端上的一个Web服务的bean定义是: 我已经尝试过@Autowired或@WebServiceRef注释。 有了这些它可以工作,但没有对Web服务做HTTP请求,我想它从本地存储库获取依赖。 我认为我需要的是在Controller上注入这个bean的方法。

JBoss 4.2.2 Web服务soap:地址

我在JBoss 4.2.2中将EJB3 bean部署为Web服务。 在生产中,服务器位于Apache服务器后面,该服务器将请求重定向到Jboss服务器。 这使得WSDL具有错误的soap:地址位置。 我能够通过server \ default \ deploy \ jbossws.sar \ jbossws.beans \ META-INF中的配置文件更改端口和主机名,但是我无法将协议切换到https 。 我发现的唯一方法是指定我自己的WSDL(通过这里 )。 通过在WSDL中指定https,JBoss会发现它是https。 但是,尽管在生产中这很好,但在QA中没有使用https(并且连接到它的服务需要有效的https,因此自签名证书不会这样做)。 因此,虽然我可以获得QA的真实证书(假证书颁发机构不会这样做),但我宁愿将其作为QA中的http。 有没有办法强制JBoss更改协议或以其他方式更改地址,以便它在soap:地址中使用http? 编辑:似乎这个问题最近在他们的bug数据库中提出并被拒绝。 这对我来说意味着他们有一个解决方法。 但它是什么? 进一步编辑:此时,我知道EJB3拦截器不起作用( 它们根本没有被激活 ),并且SOAPHandler不拦截调用以检索WSDL(经过测试 – 它们会拾取其他所有内容)。 所以filter的想法很吸引人,但目前还不清楚它的位置。 JBoss显示的URL是: 端点名称jboss.ws:context=QuickBooks-QuickBooksWebService,endpoint=QBWSBeanEJB端点地址https://127.0.0.1:8443/QuickBooks-QuickBooksWebService/QBWSBeanEJB?wsdl (注意,当我使用自定义WSDL强制https但JBoss配置为重写它时)。 我正在使用的JBossWS版本是与4.2.2捆绑在一起的版本,根据这个版本是2.0.1 编辑:关于重写 ,这确实是尝试过。 这是我发现的。 我可以让它重写主机(或不需要)和端口,但仅限于已识别的协议。 因此,为了让它发出https,我必须将bean的传输保证配置为CONFIDENTIAL,并在JBoss服务器上启用https,然后所有请求都被重定向到JBoss中的https。 我没有测试这是否适用于mod_jk(如果需要CONFIDENTIAL,AJP协议是否仍然有效,如果请求来自AJP,WSDL会获得正确的协议吗?我没有测试它),但是这样做具有相同的净效果 – 请求必须超过https。 没有办法让请求通过http或AJP进入,然后让它发出一个soap:地址作为https,特别是基于每个服务器配置(在QA和dev,http,但在生产https中,即使ssl被Apache终止。 使用自定义WSDL让我更接近,因为请求是在HTTP上进行的,但soap:地址表示https。 完美的生产(使用重写function将端口推送到443而不是8443),但对于QA无用(我不关心开发,因为开发版可能会有所不同,如果需要可以创建一个不同的jar,但我’如果我可以避免它,我对QA和具有不同构建过程的制作不满意。

SAXParseException:XML文档结构必须在同一实体中开始和结束

我正在从Apache Axis 1.4 Java客户端调用Web服务。 呼叫正确到达服务器,但客户端在大约几分钟后抛出此exception: AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: org.xml.sax.SAXParseException: XML document structures must start and end within the same entity. faultActor: faultNode: faultDetail: 例外情况并不总是一样的。 有时它会在响应中指定一个特定元素: AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: org.xml.sax.SAXParseException: The element type "name" must be terminated by the matching end-tag "</name>". faultActor: faultNode: faultDetail: 我正在进行的Web服务调用返回大量数据。 如果我将服务器配置为返回较少的数据,则呼叫成功完成。 注意:虽然我没有得到任何客户端超时exception,但我尝试将超时值增加到五分钟,但这没有任何效果。

如何用JAXB编组注释为@XmlAttachmentRef的DataHandler?

我正在尝试使用JAXB(2.1.12)编组一个具有DataHandler字段的对象。 对于流支持, DataHandler使用@ XmlAttachmentRef注释。 通过Web服务进行序列化和流式处理(JBoss上的Metro)工作正常,但是使用JAXB进行简单的编组却没有。 这是一个精简的例子: public class DataHandlerAttachmentSerialization { @XmlRootElement static class RootObject { @XmlElement @XmlAttachmentRef // Works without this, but required for streaming DataHandler dataHandler = new DataHandler( new com.sun.xml.ws.util.ByteArrayDataSource( ” “.getBytes(), “application/octet-stream”)); } @Test public void test() throws JAXBException { JAXBContext context = JAXBContext.newInstance(RootObject.class); Marshaller marshaller = context.createMarshaller(); StringWriter writer = new […]

使用Apache CXF签名和加密SOAP消息

我正在尝试使用Apache CXF编写“安全Hello World”Web服务; 我应该注意到我对Java和WS- *的新东西有些新意。 基本上,我想要做的是一个hello-world Web服务, 使用x.509证书对来自此Web服务的SOAP消息进行签名和加密 。 我已经在Apache CXF网站上阅读了关于WS-Security的教程但是; 我想使用WS-SecurityPolicy而不是拦截器。 谁能指出我正确的方向?

Restful webservices – NoClassDefFoundError:org / glassfish / jersey / ExtendedConfig

所以我在这个线程中创建了webservice,最后我设法解决了这个问题。 现在我正在尝试使用这个Web服务。 我在Netbeans上创建了一个新的Web项目,我正在使用Apache Tomcat。 这是使用Web服务的代码。 我已经完成了一些教程来生成这段代码。 package com.client; import java.net.URI; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; import org.glassfish.jersey.client.ClientConfig; public class HelloClient { public void consumeRest(){ ClientConfig config = new ClientConfig(); Client client = ClientBuilder.newClient(config); WebTarget target = client.target(getBaseURI()); System.out.println(“response”); System.out.println(target.path(“hello”).path(“world”).request() .accept(MediaType.APPLICATION_JSON).get(Response.class) .toString()); } private URI getBaseURI() { return UriBuilder.fromUri(“http://localhost:8084/restful_example”).build(); […]

Java Webservices和SOAP – 更改元素名称

我正在编写一个返回自定义类型的java Web服务。 一切正常,除非我查看SOAP响应时它不使用名称“myType” – 它使用“return” 这是我的SOAP响应 – 基本上它表示“返回”,我希望它说“mytype” S:Envelope xmlns:S=”http://schemas.xmlsoap.org/soap/envelope/”> sdf sdf 类包myWebserivce import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam; @WebService(serviceName = “myWebserivce”) public class myWebserivce{ @WebMethod(operationName = “Method”) public MyType Method(@WebParam(name = “string1”) String string1, @WebParam(name = “string2”) String string2) { MyType mt = new MyType(); mt.setField1(string1); mt.setfield2(string2); return mt; } } MyType类 import javax.xml.bind.annotation.XmlRootElement; […]

SOAP主体包含UTF-8 BOM时的JAX-WS错误

我使用部署在WebLogic 10.3上的JAX-WS(v2.1.3 – Sun JDK 1.6.0_05)开发了一个Web服务,当我使用Java客户端或SoapUI或其他Web服务测试工具时,它可以正常工作。 我需要使用2005 Microsoft SQL Server Reporting Services来使用此服务,我收到以下错误 由于exception而无法创建SOAP消息:XML reader错误:意外的字符内容 SEVERE: Couldn’t create SOAP message due to exception: XML reader error: unexpected character content: “?” com.sun.xml.ws.protocol.soap.MessageCreationException: Couldn’t create SOAP message due to exception: XML reader error: unexpected character content: “?” at com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:292) at com.sun.xml.ws.transport.http.HttpAdapter.decodePacket(HttpAdapter.java:276) at com.sun.xml.ws.transport.http.HttpAdapter.access$500(HttpAdapter.java:93) at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:432) at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244) at […]

RestAPI和Restful Web服务之间的区别

我是网络服务的新手。 有人可以帮助我理解REST API和Java中的Restful Web服务之间的区别。 我开发了一个仅基于servlet和jsp的web应用程序。 现在必须使用REST API开发相同的应用程序。 使用servlet和jsp开发Web应用程序和使用REST API开发Web应用程序之间的区别是什么。 有人可以提供指向良好教程的链接,我可以通过示例了解有关REST API的更多信息。