Я выставил веб-службу, используя службу CXF JAXWS через исходящий HTTP.Проблема с запуском службы CXF JAX WS
Ниже приведен синтаксис моего объявления конечной точки из моей конфигурации Mule.
<http:inbound-endpoint address="http://localhost:8080/HelloService" exchange-pattern="request-response">
<cxf:jaxws-service serviceClass="com.example.service.HelloServiceImpl" wsdlLocation="wsdl/helloservice.wsdl"
namespace="http://example.org/HelloService"
port="HelloServicePort" service="HelloService" >
Но это не работает. При попытке запустить это на сервере mule появляется ошибка ниже.
2013-04-08 16:34:35,252 ERROR [main] mule.MuleServer (MuleServer.java:474) -
********************************************************************************
* A Fatal error has occurred while the server was running: *
* Could not find definition for port *
* {http://service.example.com/}HelloServiceImplPort. *
* (org.apache.cxf.service.factory.ServiceConstructionException) *
* *
* The error is fatal, the system will shutdown *
********************************************************************************
Он ищет другой порт, чем тот, который я упомянул в объявлении о конечной точке обслуживания.
Пожалуйста, помогите мне понять, в чем проблема.
Ниже приведено wsdl этой услуги.
Я создал этот WSDL, а затем сгенерировал код, используя wsdl2java cfx. Затем выполняются операции сервисного интерфейса. Затем настроил службу в потоке Мула.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://example.org/HelloService"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="HelloService" targetNamespace="http://example.org/HelloService"
xmlns:per="http://example.org/HelloService/person"
xmlns:comp="http://example.org/HelloService/company"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<wsdl:types>
<xsd:schema targetNamespace="http://example.org/HelloService/company" >
<xsd:include schemaLocation="company.xsd" ></xsd:include>
</xsd:schema>
<xsd:schema targetNamespace="http://example.org/HelloService/person">
<xsd:include schemaLocation="person.xsd" ></xsd:include>
</xsd:schema>
</wsdl:types>
<wsdl:message name="addCompanyRequest">
<wsdl:part element="comp:Company" name="company"/>
</wsdl:message>
<wsdl:message name="addPersonRequest">
<wsdl:part element="per:Person" name="person"/>
</wsdl:message>
<wsdl:message name="addCompanyResponse">
<wsdl:part element="comp:CompResponse" name="response"/>
</wsdl:message>
<wsdl:message name="addPersonResponse">
<wsdl:part element="per:PerResponse" name="response"/>
</wsdl:message>
<wsdl:portType name="HelloService">
<wsdl:operation name="addCompany">
<wsdl:input message="tns:addCompanyRequest" name="addCompanyRequest" />
<wsdl:output message="tns:addCompanyResponse" name="addCompanyResponse" />
</wsdl:operation>
<wsdl:operation name="addPerson">
<wsdl:input message="tns:addPersonRequest" name="addPersonRequest" />
<wsdl:output message="tns:addPersonResponse" name="addPersonResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="HelloServiceSOAP" type="tns:HelloService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="addCompany">
<soap:operation soapAction="" style="document" />
<wsdl:input name="addCompanyRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="addCompanyResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="addPerson">
<soap:operation soapAction="" style="document" />
<wsdl:input name="addPersonRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="addPersonResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloService">
<wsdl:port binding="tns:HelloServiceSOAP" name="HelloServicePort">
<soap:address location="http://localhost:8080/HelloService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Пространство имен службы: http://example.org/HelloService. Класс реализации службы находится в пакете com.example.service с t он класс имя HelloServiceImpl. Полагаю, именно по этой причине он ищет порт с именем HelloServiceImplPort с пространством имен {http://service.example.com}. Но я уже указал пространство имен, используя атрибут пространства имен, и имя порта из wsdl также упоминается в конфигурации mule. – user1760178
Я добавил свой wsdl к вопросу. – user1760178
Я понял. Его проблема с аннотацией @WebService на моем классе impl. Большое спасибо Дэвиду Дассоту. – user1760178