![](/img/trans.png)
[英]How to get SOAP message while using a Axis 1.4 wsdl2java-generated client
[英]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.