Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WSDL到JAVA客户端代码,使用ApacheAxis1.4和Jdeveloper_Java_Web Services_Wsdl_Client - Fatal编程技术网

WSDL到JAVA客户端代码,使用ApacheAxis1.4和Jdeveloper

WSDL到JAVA客户端代码,使用ApacheAxis1.4和Jdeveloper,java,web-services,wsdl,client,Java,Web Services,Wsdl,Client,我试图从WSDL生成客户机代码。 我需要在jdeveloper10gide上工作。 我使用内置工具OracleJAX-WS2.1.5从WSDL生成了客户机代码 对于一个特定的WSDL,这个工具正在生成大约122个java类,这些类不包括定位器类。在运行代码时,我得到了WebServiceLocatorclass的类未找到异常 但是,当我使用ApacheAxis1.4(EclipseIDE)时,它会生成63个java类,还包括WebServiceLocator类,但这并不是生成身份验证所需的所有方

我试图从WSDL生成客户机代码。 我需要在jdeveloper10gide上工作。 我使用内置工具OracleJAX-WS2.1.5从WSDL生成了客户机代码

对于一个特定的WSDL,这个工具正在生成大约122个java类,这些类不包括
定位器
类。在运行代码时,我得到了
WebServiceLocator
class的类未找到异常

但是,当我使用ApacheAxis1.4(EclipseIDE)时,它会生成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

,但这并不是生成身份验证所需的所有方法,这是什么意思?你需要什么方法?什么样的身份验证?为了将我们的exchange应用程序与特定银行集成,我们获得了它们的WSDL,并需要在最终使用它。银行要求我们向银行发送一个请求以及一个身份验证头。使用WSDL Jdeveloper生成一个名为AuthHeader.java的java类,该类具有与银行进行身份验证所需的getter和setter,例如AuthHeader.setAgent\u-recordrentid(Agent\u-recordrentid);authHeader.setAgent\u UserID(Agent\u UserID);authHeader.setUser\u密码(User\u密码);然而,Eclipse没有生成这样的方法