我一直在使用rpclib自动生成WSDL并在Python中实现它。
然后,我想使用JavaEE调用一个具有此WSDL的Web服务*,所以我只在EclipseIndigo3.7.1和中的创建向导中使用了 wizard 选项,但是,除了异常之外,构建失败了(简而言之):
weblogic.wsee.tools.WsBuildException Error running JAX-WS wsdlc
Caused by java.lang.NoSuchMethodException: javax.xml.bind.annotation.XmlElementRef.required()我该怎么办?如何使用JavaEE调用web服务?
* web服务配置为:ApacheHTTPServer2.2.2+ mod_wsgi 3.3 +Python2.6.5+rpclib2.6.1。
发布于 2012-03-13 23:45:59
好的,第二次偶然发现了你的帖子,所以我将详细阐述我之前的评论:)。
首先,我要重述一下你的安排:
调用WS的一般选项:
第一个选项在您的设置中不起作用,因为DI只能在容器管理的环境中工作(见我的注释)。这意味着WS类和执行类必须位于同一个容器中(例如,同一个服务器)。
所以剩下的是手动生成WS存根。因此,您可以使用您自己的答案中提到的wsimport工具。使用此工具有几种不同的方法。让我们看看CLI的用法:
%IDE_WORKSPACE%/your project/srcstubwsimport -keep <http://yourwsdl?wsdl>回到IDE中:
现在,您可以使用生成的存根文件连接到WS,方法是从生成的port -file中获取一个
public class WsClient {
public static void main(String[] args) {
//Create Service
'GeneratedFile'Service service = new 'GeneratedFile'Service();
//create proxy
'GeneratedFile' proxy = service.get'GeneratedFile'Port();
//invoke
System.out.println(proxy.yourMethod(yourParam));
}
}最后的提示:
wsimport,可以在导入例程中直接设置它。wsimport工具。一旦建立起来,就会加速你的工作。希望这能帮上忙,玩得开心!
编辑:只是为了澄清:

在使用wsimport工具之后,您应该有一个目录,其中包含如图像中所示的文件。为了清楚地说明这个例子,您需要从RequestFileService (这是我的WS操作)获得一个服务(这是我的WS操作),比如RequestFileService service = new RequestFileService();;在此之后,您将需要像RequestFile proxy = service.getRequestFilePort();这样的服务端口。
之后,可以使用端口proxy.yourMethod(yourParam);调用方法调用。
https://stackoverflow.com/questions/9663420
复制相似问题