我已经创建了一个基于SOAP的JAX-WS服务器(使用wsgen创建的类和WSDL )。我已经用Endpoint.publish()创建了一个独立的服务器,并用java、perl和.NET客户端成功地连接到它,从而成功地测试了这一点。现在我想把它部署在一个非servlet的web框架(Play Framework)上。
不幸的是,即使在网络上到处寻找文档和代码,我也不知道如何从服务器内部调用http之外的webservice。在播放端,框架将http POST请求路由到静态java方法。访问soap包很容易,但是我不知道如何将它传递给JAX WS进行调用。
简而言之,这就是我想要做的
public class Application extends Controller
{
// function referenced by routing table
public static void func1() {
// TODO: use play to get SOAP request from caller
String soapRequest = playFrameworkCode();
Object implementor = MyJaxWsWebService();
// !!! insert JAX WS code here !!!
Object magicJaxWsObject;
String soapResult = magicJaxWsObject.invoke(soapRequest);
// TODO: use Play to return SOAP result to caller
}
}
发布于 2011-04-14 04:47:06
我不禁要问--为什么你要把肥皂和游戏混在一起?游戏背后的全部原理!就是要有一个完全RESTful的、无状态的、无共享的架构。您能详细说明您的特定用例,以保证这样的设计吗?
发布于 2014-07-21 11:36:12
您可以通过wsimport工具生成Java Web service客户端,以解析已发布的wsdl文件,并生成必要的客户端文件(存根)来访问已发布的web服务。由于wsimport工具与JDK捆绑在一起,您可以在“JDK_PATH/bin”文件夹中找到它,因此您不需要在项目中导入任何库。
wsimport -keep http://domain-name/ws/ws-name?wsdl
使用@WebServiceClient进行注释的类(例如,在我的例子中是Pgw_Service )是您的web服务客户端类,您可以使用它来调用您的web服务:
Pgw_Service service = new Pgw_Service();
System.out.println(service.getPgwPort().test("saeed"));
https://stackoverflow.com/questions/5597935
复制相似问题