2012-07-03 22 views
1

我有一个Web服务客户端,工作完全正常,其内有一个定义的WSDL的位置的线:瞄准目录内一个.jar文件中 - Java的

@WebServiceClient(name = "CReceiveMOMessageService", 
        targetNamespace = "http://...", 
        wsdlLocation = "CReceiveMOMessageService.wsdl") 

的代码块应作为可运行的JAR导出并打算在远程位置上运行。

当我像上面那样定义WSDL的位置时,它会在运行JAR文件的目录中查找WSDL文件。相反,我想要做的是将WSDL文件添加到项目文件夹并在此之后以JAR格式导出,然后以指向JAR文件内的WSDL的方式配置参数wsdlLocation

这是如何实现的?

回答

1

可以将WSDL添加到JAR中。如此看来,该公约是将WSDL在JAR在META-INF/wsdl位置(虽然Oracle工具似乎倾向于META-INF/wsdls(见point 9 of this Oracle tutorial例如)。

我还没有使用的Oracle Eclipse企业软件包,我猜该OEPE clientgen任务会不正确生成客户端类的,当你指定打包JAR里面的WSDL,但我不认为这是与传递-wsdllocation META-INF/wsdls/YourService.wsdl参数运行wsimport.exe时:

wsimport.exe将输出@WebServiceClient(... wsdlLocation = "META-INF/wsdls/YourService.wsdl")反而会通常也会在类的静态初始化器中生成如下代码:

baseUrl = YourService.class.getResource("."); 
url = new URL(baseUrl, "META-INF/wsdls/YourService.wsdl"); 

它仍然会指向根文件夹,然后它将添加所提供的WSDL路径到最终得到不存在的路径。

您将有它产生之后,包括这样的事情,而不是更改类:

url = YourService.class.getClassLoader().getResource("META-INF/wsdls/YourService.wsdl"); 

现在将JAR内点。当然,在构建客户端JAR时,您必须在该位置打包WSDL。

相关问题