使用EAP 6.2从EJB 3.0 JBoss开发人员工作室创建Web服务

时间:2014-06-28 14:46:50

标签: web-services jboss ejb-3.0 jbossws

生成客户端时出现问题 - 具有相同名称的类/接口“exercise.order.bean.GetAccountResp onse“已经在使用中。使用类自定义来解决此冲突。   / exWeb / BusinessBean的第22行?wsdl

这是wsdl -

    <wsdl:definitions name="BusinessBeanService" targetNamespace="http://bean.order.exercise/"><wsdl:types><xs:schema targetNamespace="http://bean.order.exercise/" version="1.0"><xs:element name="GetAccount" type="tns:GetAccount"/><xs:element name="GetAccountResponse" type="tns:GetAccountResponse"/><xs:complexType name="GetAccount"><xs:sequence><xs:element minOccurs="0" name="getAccountRequest" type="tns:getAccountRequest"/></xs:sequence></xs:complexType><xs:complexType name="getAccountRequest"><xs:sequence><xs:element minOccurs="0" name="accountID" type="xs:string"/><xs:element minOccurs="0" name="clientID" type="xs:string"/></xs:sequence></xs:complexType><xs:complexType name="GetAccountResponse"><xs:sequence><xs:element minOccurs="0" name="return" type="tns:getAccountResponse"/></xs:sequence></xs:complexType><xs:complexType name="getAccountResponse"><xs:sequence><xs:element minOccurs="0" name="accountID" type="xs:string"/><xs:element minOccurs="0" name="accountName" type="xs:string"/><xs:element minOccurs="0" name="clientID" type="xs:string"/><xs:element minOccurs="0" name="orderCount" type="xs:string"/></xs:sequence></xs:complexType></xs:schema></wsdl:types><wsdl:message name="GetAccountResponse"><wsdl:part element="tns:GetAccountResponse" name="parameters">
</wsdl:part></wsdl:message><wsdl:message name="GetAccount"><wsdl:part element="tns:GetAccount" name="parameters">
</wsdl:part></wsdl:message><wsdl:portType name="BusinessBean"><wsdl:operation name="GetAccount"><wsdl:input message="tns:GetAccount" name="GetAccount">
</wsdl:input><wsdl:output message="tns:GetAccountResponse" name="GetAccountResponse">
</wsdl:output></wsdl:operation></wsdl:portType><wsdl:binding name="BusinessBeanServiceSoapBinding" type="tns:BusinessBean"><soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="GetAccount"><soap:operation soapAction="" style="document"/><wsdl:input name="GetAccount"><soap:body use="literal"/></wsdl:input><wsdl:output name="GetAccountResponse"><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="BusinessBeanService"><wsdl:port binding="tns:BusinessBeanServiceSoapBinding" name="BusinessBeanPort"><soap:address location="http://localhost:8080/exWeb/BusinessBean"/></wsdl:port></wsdl:service></wsdl:definitions>

EJB -

@Stateless
@WebService
public class BusinessBean implements BusinessService {

@EJB private DataServiceLocal dataService;

   @Override
   @WebMethod
   @WebResult
   public GetAccountResponse GetAccount(@WebParam GetAccountRequest getAccountRequest) {

    GetAccountResponse gResponse = new GetAccountResponse();

    String clientID =  getAccountRequest.getAccountID();
    String accountID = getAccountRequest.getAccountID();

    //Find the list of order
    Order order = dataService.findOrder(accountID);

    //Find the account details
    Account account = dataService.findAccount(accountID);

    gResponse.setAccountID(accountID);
    gResponse.setAccountName(account.getAccname());
    gResponse.setClientID(clientID);
    gResponse.setOrderCount("");

    return gResponse;       

}

1 个答案:

答案 0 :(得分:0)

根本原因可能是您正在使用的Web服务参数样式。 JAX-WS默认为WRAPPED参数样式。

这意味着在WSDL中,已经存在GetAccountResponse类型,它表示您的Web服务生成的响应消息。此类型(或部分)与您声明为Web服务操作输出的GetAccountResponse类不同且不同。这种重复的结果就是您所经历的。

要解决此问题,请在导入WSDL时使用autoNameResolution参数。

   wsimport BusinessBean.wsdl -B-XautoNameResolution

另见: