Attualmente sto implementando un servizio Web Spring utilizzando jaxb. Ma quando provo a consumare il servizio web creato si incontra un errore WebServiceTransportException: Not Found [404]
. Ho provato a cercare in rete ma non sono riuscito a trovare una possibile causa principale. Di seguito ho mostrato i miei codici sorgente.WebServiceTransportException: Not Found [404]
applicazione context.xml
<bean
class="org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter">
<constructor-arg ref="marshaller" />
</bean>
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.ph.domain.EightBallRequest</value>
<value>com.ph.domain.EightBallResponse</value>
</list>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
lazy-init="true">
<property name="mappings">
<props>
<prop key="/test.asp">LandingController</prop>
</props>
</property>
</bean>
<bean name="LandingController" class="com.ph.controller.LandingController">
<property name="stub" ref="eightBallClient"/>
</bean>
Client per webservice
public class EightBallClient extends WebServiceGatewaySupport {
private Resource request;
public void setRequest(Resource request) {
this.request = request;
}
public String AskQuestion(String question) throws IOException {
String responseString = null;
EightBallRequest request = new EightBallRequest();
request.setQuestion(question);
EightBallResponse response = new EightBallResponse();
response = (EightBallResponse) getWebServiceTemplate()
.marshalSendAndReceive(request);
responseString = response.getAnswer().toString();
return responseString;
}
}
definizione del mio servizio web
<bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema">
<property name="xsd" value="/WEB-INF/eightball.xsd" />
</bean>
E sotto è la stack errori:
SEVERE: Servlet.service() for servlet dispatcher threw exception
org.springframework.ws.client.WebServiceTransportException: Not Found [404]
at org.springframework.ws.client.core.WebServiceTemplate.handleError(WebServiceTemplate.java:626)
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:550)
at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:501)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:350)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:344)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:336)
si prega di controllare la cartella lib hai incluso questo jar spring-oxm-1.5.6.jar? – Ami
@ILLA - sì, la primavera-OXM-1.5.6.jar è comprendere come pure i campi vaso di seguito: \ n primavera-OXM-tigre primavera-ws primavera-ws-nucleo primavera-WS-core- tigre – plandi07
@ILLA - conosci un sito che fornisce tutorial/implementazione completi dalla creazione di servizi Web di primavera con JAXB fino al consumo del servizio al cliente. Sono un po 'confuso su come il client consumerà il webservice di primavera ... Sono aggiornato sul progetto che ha bisogno di esporre il livello di servizio esistente dell'applicazione Spring Mvc in modo che altre applicazioni possano usarlo. qualche idea? Grazie in anticipo. – plandi07