2014-06-28 108 views
0

獲取問題產生客戶端時 - 具有相同名稱的類/接口「exercise.order.bean.GetAccountResp ONSE」已被使用。使用類定製來解決此衝突。 線22/exWeb/BusinessBean WSDL創建從EJB 3.0的JBoss Developer Studio中的WebServices用EAP 6.2

這裏是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;  

} 

回答

0

的根本原因很可能將成爲Web服務的參數風格的你使用。 JAX-WS默認爲WRAPPED參數樣式。

這意味着在WSDL中,已經有一個GetAccountResponse類型,它表示您的web服務生成的響應消息。這種類型的(或部分)是你已經聲明爲Web服務操作的輸出的GetAccountResponse類不同的和獨立的。這種重複的結果就是你所經歷的。

要解決,導入WSDL時,使用autoNameResolution參數。

wsimport BusinessBean.wsdl -B-XautoNameResolution 

參見:

相關問題