我需要创建一个用于使用SOAP服务的客户端应用程序。我需要从2个wsdl(来自2个不同的服务器应用程序)创建客户端应用程序
以下是第一个 Web服务
的代码EcommPromoWebService.java
package com.ptdam.promo.webservices;
import javax.jws.WebService;
@WebService
public interface EcommPromoWebService {
String sayHi(String text);
EcommPromoResponse inquiryPromo(EcommPromoRequest promoInquiryRequest);
}
EcommPromoWebServiceImpl.java
package com.ptdam.promo.webservices;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.jws.WebService;
import com.ptdam.promo.utils.C3p0ConnectionPool;
@WebService(endpointInterface="com.ptdam.promo.webservices.EcommPromoWebService")
public class EcommPromoWebServiceImpl implements EcommPromoWebService {
@Override
public String sayHi(String text) {
System.out.println("sayHi called");
return "Hello, " + text;
}
@Override
public EcommPromoResponse inquiryPromo(EcommPromoRequest promoInquiryRequest) {
EcommPromoResponse response = new EcommPromoResponse();
Connection connInquiry = null;
// and any other stuffs
}
这是第二个 Web服务的代码: TopupWebService.java
package ptdam.emoney.webservice.transactions;
@WebService
public interface TopupWebService {
@Permission(ServiceOperation.MANAGE_MEMBERS)
@WebMethod
@WebResult(name = "echoTestResult")
String echoTest(@WebParam(name = "tx") String tx);
@Permission(ServiceOperation.MANAGE_MEMBERS)
@WebMethod
@WebResult(name = "inquiryResult")
TopupInquiryResponse inquiry(@WebParam(name = "request") TopupInquiryRequest request);
// and any other stuffs
TopUpWebserviceImpl.java
package ptdam.emoney.webservice.transactions;
@WebService(name = "emoneytopup", serviceName = "emoneytopup")
public class TopupWebServiceImpl implements TopupWebService {
// and any other stuffs
}
我注意到它们之间存在差异。其中一个是第一个 webservice在其实现类上有endPointInterface
,而第二个没有。{/ p>
当我使用wsimport
命令生成两者的客户端代码时,它也会生成不同的类。 第一个 Web服务将与实现类(EcommPromoWebServiceImplService
类)一起生成,而第二个没有生成实现类。
那么,如何为第二个 webservice正确生成客户端应用程序的类?因为没有生成实现类,我不断在我的客户端应用程序上获取NullPointerException(请在此查看我的帖子:Spring @AutoWired always null)
我用来生成它们的wsimport
命令是wsimport -keep -verbose <wsdladdress>