是否有一种简单的方法(也就是说:不使用代理)来访问使用JAX-WS参考实现(JDK 1.5及更高版本中包含的那个)发布的Web服务的原始请求/响应XML?能够通过代码实现这一点是我需要做的.只需通过巧妙的日志记录配置将其记录到文件中就可以了.
我知道其他更复杂和完整的框架可能会这样做,但我希望尽可能简单,并且axis,cxf等都会增加我想要避免的大量开销.
谢谢!
有什么区别:
这三个都可用于在Java中创建Web服务.
据我所知,JAX-WS是一个规范,Axis2和CXF是实现,但是如果我没有错,Java 1.6就会实现JAX-WS.
那么可以使用Java 1.6来开发JAX-WS Web服务而无需使用Axis2或CXF吗?那么Axis2,CXF的用途是什么?
我对网络服务世界相对较新,我的研究似乎让我困惑不仅仅是启发我,我的问题是我得到了一个库(jar),我必须扩展一些web服务功能.
这个库将与其他开发人员共享,并且jar中的类将是具有调用webservice的方法的类(实质上设置类的属性,执行一些业务逻辑,如将对象存储在db中,等,并通过这些修改发送回对象).我想尽可能简单地调用这个服务,希望这很简单,这样开发人员只需要使用类.
Car c = new Car("Blue");
c.webmethod();
Run Code Online (Sandbox Code Playgroud)
我一直在研究JAX-WS在服务器上使用,但在我看来,我不需要wsimport在服务器wsimport上创建一个,也不需要在客户端上创建,因为我知道两者都有类,我只需要在类之间进行一些交互在服务器和客户端共享.您认为在课堂上进行网络服务和通话有何意义?
我使用来自wsdl'的Eclipse'Web服务客户端,使用JBoss utils(JAX-WS兼容)生成了一个Web服务客户端.
所以,我提供的唯一内容是Web服务WSDL的URL.
现在,Web服务提供商告诉我更改Web服务的"客户端端点应用程序访问的URL".
它是什么以及如何改变它?
有人可以向我解释Document和RPC风格的webservices之间的区别吗?除了JAX-RPC之外,下一个版本是JAX-WS,它支持Document和RPC样式.我也理解文档样式webservices是用于异步通信的,其中客户端在收到响应之前不会阻塞.
无论哪种方式,使用JAX-WS我当前使用@Webservice注释服务,生成WSDL,并从该WSDL生成客户端工件.
收到工件后,在两种样式中,我都会在端口上调用方法.现在,这在RPC样式和文档样式上没有区别.那有什么区别,这种差异在哪里可见?
同样,SOAP over HTTP与HTTP上的XML有何不同?毕竟SOAP也是带有SOAP命名空间的XML文档.
在阅读了一些关于JAX-RS和JAX-WS的文章之后,我有几个问题需要确认?
我已经使用JAXWS-RI 2.1基于WSDL为我的Web服务创建了一个接口.我可以与Web服务进行交互没有问题,但是无法指定向Web服务发送请求的超时.如果由于某种原因它没有响应客户端似乎永远旋转它的轮子.
狩猎已经显示我应该尝试做这样的事情:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.connect.timeout", 10000);
Run Code Online (Sandbox Code Playgroud)
我还发现,根据您拥有的JAXWS-RI版本,您可能需要设置这些属性:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 10000);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,无论上述哪一项是正确的,我都不知道我能在哪里做到这一点.我所拥有的只是一个Service子类,它实现了自动生成的webservice接口,并且实现了这一点,如果WSDL没有响应,那么设置属性已经太晚了:
MyWebServiceSoap soap;
MyWebService service = new MyWebService("http://www.google.com");
soap = service.getMyWebServiceSoap();
soap.sendRequestToMyWebService();
Run Code Online (Sandbox Code Playgroud)
任何人都能指出我正确的方向吗?!
我有第三方WSDL,我需要用Java编写代码,以便Web服务客户端调用第三方WSDL中的操作.现在,我使用Axis的WSDL2JAVA工具生成了客户端存根,并使用XMLbeans进行数据绑定.
wsimport在另一种选择.优缺点都有什么?我最初使用了一些基本的东西.现在我有这些选择
C:\axis2-1.5.1\bin>wsdl2java -uri mywsdlurl -o client -p somepackage -d xmlbeans -s -t -ssi
Run Code Online (Sandbox Code Playgroud) 问题是我需要从我提供的文件构建一个Web服务客户端.我已将此文件存储在本地文件系统中,并且在将WSDL文件保存在正确的文件系统文件夹中时,一切都很好.当我将其部署到服务器或从文件系统文件夹中删除WSDL时,代理无法找到WSDL并出现错误.我在网上搜索过,但我发现了以下帖子但是我无法使它工作:
JAX-WS从jar加载WSDL
http://www.java.net/forum/topic/glassfish/metro -and-jaxb/client-jar-cant-find-local-wsdl-0
http://blog.vinodsingh.com/2008/12/locally-packaged-wsdl.html
我正在使用NetBeans 6.1(这是我要用这个新的Web服务客户端更新的遗留应用程序).下面是JAX-WS代理类:
@WebServiceClient(name = "SOAService", targetNamespace = "http://soaservice.eci.ibm.com/", wsdlLocation = "file:/C:/local/path/to/wsdl/SOAService.wsdl")
public class SOAService
extends Service
{
private final static URL SOASERVICE_WSDL_LOCATION;
private final static Logger logger = Logger.getLogger(com.ibm.eci.soaservice.SOAService.class.getName());
static {
URL url = null;
try {
URL baseUrl;
baseUrl = com.ibm.eci.soaservice.SOAService.class.getResource(".");
url = new URL(baseUrl, "file:/C:/local/path/to/wsdl/SOAService.wsdl");
} catch (MalformedURLException e) {
logger.warning("Failed to create URL for the wsdl Location: 'file:/C:/local/path/to/wsdl/SOAService.wsdl', retrying as a local file");
logger.warning(e.getMessage());
}
SOASERVICE_WSDL_LOCATION = url;
}
public SOAService(URL wsdlLocation, …Run Code Online (Sandbox Code Playgroud) 我在JAX-WS中设置了一个SOAP WebServiceProvider,但是我无法弄清楚如何从SOAPMessage(或任何Node)对象中获取原始XML.这是我现在获得的代码示例,以及我在尝试获取XML的地方:
@WebServiceProvider(wsdlLocation="SoapService.wsdl")
@ServiceMode(value=Service.Mode.MESSAGE)
public class SoapProvider implements Provider<SOAPMessage>
{
public SOAPMessage invoke(SOAPMessage msg)
{
// How do I get the raw XML here?
}
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来获取原始请求的XML?如果有办法通过设置不同类型的Provider(例如Source)来获取原始XML,我也愿意这样做.