繁体   English   中英

WSDL到JAVA客户端代码,使用Apache Axis 1.4和Jdeveloper

[英]WSDL to JAVA Client code, Using Apache Axis 1.4 and Jdeveloper

我正在尝试从WSDL生成客户端代码。 我需要使用Jdeveloper 10g IDE。 我使用内置工具Oracle JAX-WS 2.1.5从WSDL中生成了客户端代码。

对于特定的WSDL,此工具将生成约122个不包含Locator类的Java类。 在运行代码时,我得到了WebServiceLocator类的类未找到异常。

但是,当我使用Apache Axis 1.4(Eclipse IDE)时,它会生成63个Java类,并且还包含WebServiceLocator类,但这不会生成身份验证所需的所有必需方法,尽管Oracle JAX-WS 2.1 .5。 正在生成这些方法。

我尝试将Eclipse生成的Java类合并到Jdeveloper中,但是随后出现了很多与方法签名有关的错误。

为什么这两个不同的工具生成不同的客户端代码,但又没有一个完整的原因呢?

这可能有点晚了,但是对于遇到同样问题的人来说,这可能会有所帮助。 如果您确实要使用Axis 1.x身份验证,请按照以下步骤在客户端类上进行:

MyLocator bindingService = new MyLocator();
bindingService .setPortEndPointAddress(myEndpoint);
MyPort port= bindingService.getMyPort();
((Stub)port)._setProperty(Stub.USERNAME_PROPERTY, myUsername);
((Stub)port)._setProperty(Stub.PASSWORD_PROPERTY, mPassword);
//Perform your query here

我会亲自使用JAX-WS。 使用wsimport生成存根(SOAPUI有一个不错的插件可以简化此过程)。 为了在JAX-WS客户端上进行身份验证,最简单的方法是将wsdl本地保存并导出为jar的一部分,然后将其加载到客户端中。 这样一来就无需进行访问wsdl所需的HTTP授权。

URL myWsdlUrl = getClass().getClassLoader().getResource("wsdl/myWsdlFile.wsdl");
MyService service = new MyService(myWsdlUrl , new QName("uri", "localpart"));
myPort port= service .getPort();
BindingProvider bp= ((BindingProvider)vPort);
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, myEndPoint);
bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, myUsername);
bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, myPassword);
//Perform query here

暂无
暂无

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

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