繁体   English   中英

java中的动态代理soap web服务客户端?

[英]dynamic proxy soap web service client in java?

有没有办法使用soap-rpc Web服务,以便通过共享接口生成客户端? 宁静的网络服务这样做,但基于肥皂呢? 您是否总是必须使用Axis或CXF之类的工具来生成存根和代理,或者是否存在可以动态设置它的内容?

谢谢。

编辑#1:

为了澄清,我希望做这样的事情:

通用接口:

@WebService
public interface MyWebService {

   @WebMethod
   String helloWorld();
}

此公共接口已可用于创建服务器端组件。 我的问题是: 可以在客户端使用这种类型的通用接口来生成动态代理吗? Restful Web服务就是这样做的(Restlets和CXF),似乎.Net世界也有这种类型的功能。

我会看到JAX-WS的这个教程对你的目的很有用:

在示例代码中,通过向客户端实现类添加带有指向WSDL位置的属性的注释@WebServiceRef来配置Web服务客户端,并且不需要任何工具来从引用的Web Service访问这些内容。

这是你希望拥有它的方式,还是这样做甚至回答了正确的问题?

不完全确定您要查找的内容,但如果您不想依赖于JAX-WS / JAXB生成的工件(服务接口和绑定对象),则可以使用ServiceDispatch API。 例如:

QName serviceName = new QName(...);
Service service = Service.create(serviceName);
QName portName = new QName(...);
String endpointAddress = "...";
service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
SOAPMessage request = ...;
SOAPMessage response = dispatch.invoke(request);

检查Apache CXF。 配置Spring客户端(选项1)

当您想要调用Web服务时,您必须了解在其上实现的方法。 为此,我们需要创建存根,或者我们可以从WSDL中读取它。

我使用AXIS2库创建了一个WS客户端,它没有存根。 事情是,对于每个差异。 WS我们需要创建响应句柄。

您可以使用SOAP信封调用任何WS方法并处理响应。

//common interface for response handlers...
//implement this for diff. web service/methods

public interface WSRespHandler{
    public Object getMeResp(Object respData);
}

//pass particular handler to client when you call some WS
public class WebServiceClient {
    public Object getResp(WSRespHandler respHandler) {
        ...
        return repHandler.getMeResp(xmlData);
    }
}

请查看下面的链接,其中显示了WS客户端的示例界面。

http://javalibs.blogspot.com/2010/05/axis2-web-service-client-without.html

对于每一个差异。 WS方法我们可以有diff。 WSRespHandler接口的实现,它将帮助解析响应。

不是很了解java,但被迫学习一些来完成我给出的任务,我需要使用我已经编写过的.Net服务,我不得不做一些研究。

我发现99%的示例/样本/问题与调用.Net服务的方法调用,或任何服务涉及使用J2EE(ServiceManager)或构建类和反映被调用服务的代理。 对我来说不幸的是,这一切都不会奏效。 我在“一个盒子里”工作。 我无法添加新类,无法WSDL引用,没有J2EE,但DID可以访问标准的java库。 我习惯于用几乎所有其他语言来做这种事情,但是java,但现在没有选择,而java则是。

很多挖掘和弄清楚所有新的术语,方法,类等,我知道我已经接近了,但是有一些小项目的问题来完成任务。 然后我发现了这篇文章: http//www.ibm.com/developerworks/xml/library/x-jaxmsoap/

只要您对根据soap信封发送soap服务所需的内容有所了解,上面的链接将为您提供在没有类,wsdl类生成器和类的情况下调用服务所需的信息。 J2EE,apache或其他依赖项。

在我阅读上述文章后的一个小时内,我有一个班级工作,大约10分钟后,将代码转换为“盒中”解决方案。

希望这可以帮助

Apache Tuscany可能会帮助你,虽然它可能比你想要的更重http://tuscany.apache.org/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM