You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Bruno Melloni <Br...@chickasaw.net> on 2009/07/02 21:04:54 UTC
Help with 'Hello World' "Writing a service with Spring' please
I attempted to follow the How-To for writing a HelloWorld service with Spring. It is obvious that once you figure out the secrets CXF makes writing services very easy. Unfortunately I a missing something because I get some strange uninformative error messages (shown at the bottom).
I suspect that the problem is either a JAR issue or a problem with the path to the service - but I don't see it :P
Any help would be greatly appreciated.
Major software versions:
CXF 2.2.2
Java 6
Tomcat 6
Spring 2.5.6
Eclipse 3.4.2 (Ganymede)
JARs in WEB-INF/lib:
commons-logging-1.1.1.jar
cxf-2.2.2.jar
geronimo-activation_1.1_spec-1.0.2.jar
geronimo-annotation_1.0_spec-1.1.1.jar
geronimo-javamail_1.4_spec-1.6.jar
geronimo-jaxws_2.1_spec-1.0.jar
geronimo-servlet_2.5_spec-1.2.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
geronimo-ws-metadata_2.0_spec-1.1.2.jar
jaxb-api-2.1.jar
jaxb-impl-2.1.9.jar
neethi-2.0.4.jar
saaj-api-1.3.jar
saaj-impl-1.3.2.jar
spring-2.5.6.jar
wsdl4j-1.6.2.jar
wstx-asl-3.2.8.jar
xml-resolver-1.2.jar
XmlSchema-1.4.5.jar
The interface and Impl:
@WebService
public interface HelloWorld {
String sayHi(String text);
}
@WebService (endpointInterface = "net.cndc.utility.email.ws.HelloWorld")
public class HelloWorldImpl {
public String sayHi(String text) {
System.out.println("sayHi called");
return "Hello "+text;
}
}
The service spring context and web.xml are:
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxws:endpoint id="helloWorld" address="/services/HelloWorld" implementor="net.cndc.utility.email.ws.HelloWorldImpl" />
<!-- If we want a context-accessible managed bean for the WS, use this instead:
<bean id="hello" class="net.cndc.utility.email.ws.HelloWorldImpl" />
<jaxws:endpoint id="helloWorld" address="/HelloWorld" implementor="#hello" />
-->
</beans>
<web-app id="WebApp_ID" version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>UtilityWS</display-name>
<!-- Where to load application contexts from (besides the Spring MVC context) -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<display-name>CXF Servlet</display-name>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
The client context and code are:
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<!-- Client side: -->
<jaxws:client id="helloClient" address="http://localhost:8080/services/HelloWorld" serviceClass="net.cndc.utility.email.ws.HelloWorld" />
</beans>
package net.cndc.utility.email.test;
import net.cndc.utility.email.ws.HelloWorld;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class WsTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"applicationContext-client.xml"});
HelloWorld client = (HelloWorld) context.getBean("helloClient");
String msg = client.sayHi("ding dong da dong");
System.out.println("WS called - response: "+msg);
}
}
And finally, the error is:
Jul 2, 2009 1:45:49 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1a05308: display name [org.springframework.context.support.ClassPathXmlApplicationContext@1a05308]; startup date [Thu Jul 02 13:45:49 CDT 2009]; root of context hierarchy
Jul 2, 2009 1:45:49 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationContext-client.xml]
Jul 2, 2009 1:45:49 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [META-INF/cxf/cxf.xml]
Jul 2, 2009 1:45:49 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [META-INF/cxf/cxf-extension-soap.xml]
Jul 2, 2009 1:45:49 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [META-INF/cxf/cxf-servlet.xml]
Jul 2, 2009 1:45:50 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@1a05308]: org.springframework.beans.factory.support.DefaultListableBeanFactory@12a0f6c
Jul 2, 2009 1:45:50 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@12a0f6c: defining beans [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.transport.servlet.ServletTransportFactory,helloClient.proxyFactory,helloClient]; root of factory hierarchy
Jul 2, 2009 1:45:50 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
INFO: Creating Service {http://ws.email.utility.cndc.net/}HelloWorldService from class net.cndc.utility.email.ws.HelloWorld
Jul 2, 2009 1:45:50 PM org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:471)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:301)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:121)
at $Proxy34.sayHi(Unknown Source)
at net.cndc.utility.email.test.WsTest.main(WsTest.java:14)
Caused by: java.io.IOException: Not Found
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2064)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2015)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1940)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
... 8 more
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Could not send Message.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:141)
at $Proxy34.sayHi(Unknown Source)
at net.cndc.utility.email.test.WsTest.main(WsTest.java:14)
Caused by: java.io.IOException: Not Found
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2064)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2015)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1940)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:471)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:301)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:121)
... 2 more
Re: Help with 'Hello World' "Writing a service with Spring' please
Posted by Glen Mazza <gl...@gmail.com>.
http://www.jroller.com/gmazza/entry/creating_a_wsdl_first_web1 ?
bmelloni wrote:
>
> I attempted to follow the How-To for writing a HelloWorld service with
> Spring. It is obvious that once you figure out the secrets CXF makes
> writing services very easy. Unfortunately I a missing something because I
> get some strange uninformative error messages (shown at the bottom).
>
> I suspect that the problem is either a JAR issue or a problem with the
> path to the service - but I don't see it :P
>
> Any help would be greatly appreciated.
>
> Major software versions:
>
> CXF 2.2.2
> Java 6
> Tomcat 6
> Spring 2.5.6
> Eclipse 3.4.2 (Ganymede)
>
> JARs in WEB-INF/lib:
>
> commons-logging-1.1.1.jar
> cxf-2.2.2.jar
> geronimo-activation_1.1_spec-1.0.2.jar
> geronimo-annotation_1.0_spec-1.1.1.jar
> geronimo-javamail_1.4_spec-1.6.jar
> geronimo-jaxws_2.1_spec-1.0.jar
> geronimo-servlet_2.5_spec-1.2.jar
> geronimo-stax-api_1.0_spec-1.0.1.jar
> geronimo-ws-metadata_2.0_spec-1.1.2.jar
> jaxb-api-2.1.jar
> jaxb-impl-2.1.9.jar
> neethi-2.0.4.jar
> saaj-api-1.3.jar
> saaj-impl-1.3.2.jar
> spring-2.5.6.jar
> wsdl4j-1.6.2.jar
> wstx-asl-3.2.8.jar
> xml-resolver-1.2.jar
> XmlSchema-1.4.5.jar
>
> The interface and Impl:
>
> @WebService
> public interface HelloWorld {
> String sayHi(String text);
> }
>
> @WebService (endpointInterface = "net.cndc.utility.email.ws.HelloWorld")
> public class HelloWorldImpl {
> public String sayHi(String text) {
> System.out.println("sayHi called");
> return "Hello "+text;
> }
> }
>
> The service spring context and web.xml are:
>
> <beans
> xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:jaxws="http://cxf.apache.org/jaxws"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
> http://cxf.apache.org/jaxws
> http://cxf.apache.org/schemas/jaxws.xsd">
>
> <import resource="classpath:META-INF/cxf/cxf.xml" />
> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>
> <jaxws:endpoint id="helloWorld" address="/services/HelloWorld"
> implementor="net.cndc.utility.email.ws.HelloWorldImpl" />
> <!-- If we want a context-accessible managed bean for the WS, use this
> instead:
> <bean id="hello" class="net.cndc.utility.email.ws.HelloWorldImpl" />
> <jaxws:endpoint id="helloWorld" address="/HelloWorld"
> implementor="#hello" />
> -->
>
> </beans>
>
> <web-app id="WebApp_ID" version="2.5"
> xmlns="http://java.sun.com/xml/ns/javaee"
> xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
>
> <display-name>UtilityWS</display-name>
>
> <!-- Where to load application contexts from (besides the Spring MVC
> context) -->
> <context-param>
> <param-name>contextConfigLocation</param-name>
>
> <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
> </context-param>
> <listener>
>
> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
> </listener>
>
> <servlet>
> <display-name>CXF Servlet</display-name>
> <servlet-name>CXFServlet</servlet-name>
>
> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
> <load-on-startup>1</load-on-startup>
> </servlet>
> <servlet-mapping>
> <servlet-name>CXFServlet</servlet-name>
> <url-pattern>/services/*</url-pattern>
> </servlet-mapping>
>
> <welcome-file-list>
> <welcome-file>index.jsp</welcome-file>
> </welcome-file-list>
> </web-app>
>
> The client context and code are:
>
> <beans
> xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:jaxws="http://cxf.apache.org/jaxws"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
> http://cxf.apache.org/jaxws
> http://cxf.apache.org/schemas/jaxws.xsd">
>
> <import resource="classpath:META-INF/cxf/cxf.xml" />
> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>
> <!-- Client side: -->
> <jaxws:client id="helloClient"
> address="http://localhost:8080/services/HelloWorld"
> serviceClass="net.cndc.utility.email.ws.HelloWorld" />
>
> </beans>
>
> package net.cndc.utility.email.test;
>
> import net.cndc.utility.email.ws.HelloWorld;
>
> import org.springframework.context.ApplicationContext;
> import org.springframework.context.support.ClassPathXmlApplicationContext;
>
> public class WsTest {
>
> public static void main(String[] args) {
> ApplicationContext context = new ClassPathXmlApplicationContext(
> new String[] {"applicationContext-client.xml"});
> HelloWorld client = (HelloWorld) context.getBean("helloClient");
> String msg = client.sayHi("ding dong da dong");
> System.out.println("WS called - response: "+msg);
> }
> }
>
> And finally, the error is:
>
> Jul 2, 2009 1:45:49 PM
> org.springframework.context.support.AbstractApplicationContext
> prepareRefresh
> INFO: Refreshing
> org.springframework.context.support.ClassPathXmlApplicationContext@1a05308:
> display name
> [org.springframework.context.support.ClassPathXmlApplicationContext@1a05308];
> startup date [Thu Jul 02 13:45:49 CDT 2009]; root of context hierarchy
> Jul 2, 2009 1:45:49 PM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [applicationContext-client.xml]
> Jul 2, 2009 1:45:49 PM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf.xml]
> Jul 2, 2009 1:45:49 PM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf-extension-soap.xml]
> Jul 2, 2009 1:45:49 PM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf-servlet.xml]
> Jul 2, 2009 1:45:50 PM
> org.springframework.context.support.AbstractApplicationContext
> obtainFreshBeanFactory
> INFO: Bean factory for application context
> [org.springframework.context.support.ClassPathXmlApplicationContext@1a05308]:
> org.springframework.beans.factory.support.DefaultListableBeanFactory@12a0f6c
> Jul 2, 2009 1:45:50 PM
> org.springframework.beans.factory.support.DefaultListableBeanFactory
> preInstantiateSingletons
> INFO: Pre-instantiating singletons in
> org.springframework.beans.factory.support.DefaultListableBeanFactory@12a0f6c:
> defining beans
> [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.transport.servlet.ServletTransportFactory,helloClient.proxyFactory,helloClient];
> root of factory hierarchy
> Jul 2, 2009 1:45:50 PM
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromClass
> INFO: Creating Service
> {http://ws.email.utility.cndc.net/}HelloWorldService from class
> net.cndc.utility.email.ws.HelloWorld
> Jul 2, 2009 1:45:50 PM org.apache.cxf.phase.PhaseInterceptorChain
> doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Could not send Message.
> at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:471)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:301)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253)
> at
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:121)
> at $Proxy34.sayHi(Unknown Source)
> at net.cndc.utility.email.test.WsTest.main(WsTest.java:14)
> Caused by: java.io.IOException: Not Found
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2064)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2015)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1940)
> at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
> at
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627)
> at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> ... 8 more
> Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Could not
> send Message.
> at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:141)
> at $Proxy34.sayHi(Unknown Source)
> at net.cndc.utility.email.test.WsTest.main(WsTest.java:14)
> Caused by: java.io.IOException: Not Found
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2064)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2015)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1940)
> at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
> at
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627)
> at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:471)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:301)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253)
> at
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:121)
> ... 2 more
>
>
>
--
View this message in context: http://www.nabble.com/Help-with-%27Hello-World%27-%22Writing-a-service-with-Spring%27-please-tp24312387p24312497.html
Sent from the cxf-user mailing list archive at Nabble.com.
Re: Help with 'Hello World' "Writing a service with Spring' please
Posted by Mayank Mishra <ma...@gmail.com>.
I guess looking at the exception what you are getting it seems that your
client is not able to connect to the server. I hope the service is up
and the right url is being invoked.
It is not a jar issue.
With Regards,
Mayank
Bruno Melloni wrote:
> I attempted to follow the How-To for writing a HelloWorld service with Spring. It is obvious that once you figure out the secrets CXF makes writing services very easy. Unfortunately I a missing something because I get some strange uninformative error messages (shown at the bottom).
>
> I suspect that the problem is either a JAR issue or a problem with the path to the service - but I don't see it :P
>
> Any help would be greatly appreciated.
>
> Major software versions:
>
> CXF 2.2.2
> Java 6
> Tomcat 6
> Spring 2.5.6
> Eclipse 3.4.2 (Ganymede)
>
> JARs in WEB-INF/lib:
>
> commons-logging-1.1.1.jar
> cxf-2.2.2.jar
> geronimo-activation_1.1_spec-1.0.2.jar
> geronimo-annotation_1.0_spec-1.1.1.jar
> geronimo-javamail_1.4_spec-1.6.jar
> geronimo-jaxws_2.1_spec-1.0.jar
> geronimo-servlet_2.5_spec-1.2.jar
> geronimo-stax-api_1.0_spec-1.0.1.jar
> geronimo-ws-metadata_2.0_spec-1.1.2.jar
> jaxb-api-2.1.jar
> jaxb-impl-2.1.9.jar
> neethi-2.0.4.jar
> saaj-api-1.3.jar
> saaj-impl-1.3.2.jar
> spring-2.5.6.jar
> wsdl4j-1.6.2.jar
> wstx-asl-3.2.8.jar
> xml-resolver-1.2.jar
> XmlSchema-1.4.5.jar
>
> The interface and Impl:
>
> @WebService
> public interface HelloWorld {
> String sayHi(String text);
> }
>
> @WebService (endpointInterface = "net.cndc.utility.email.ws.HelloWorld")
> public class HelloWorldImpl {
> public String sayHi(String text) {
> System.out.println("sayHi called");
> return "Hello "+text;
> }
> }
>
> The service spring context and web.xml are:
>
> <beans
> xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:jaxws="http://cxf.apache.org/jaxws"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
>
> <import resource="classpath:META-INF/cxf/cxf.xml" />
> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>
> <jaxws:endpoint id="helloWorld" address="/services/HelloWorld" implementor="net.cndc.utility.email.ws.HelloWorldImpl" />
> <!-- If we want a context-accessible managed bean for the WS, use this instead:
> <bean id="hello" class="net.cndc.utility.email.ws.HelloWorldImpl" />
> <jaxws:endpoint id="helloWorld" address="/HelloWorld" implementor="#hello" />
> -->
>
> </beans>
>
> <web-app id="WebApp_ID" version="2.5"
> xmlns="http://java.sun.com/xml/ns/javaee"
> xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
>
> <display-name>UtilityWS</display-name>
>
> <!-- Where to load application contexts from (besides the Spring MVC context) -->
> <context-param>
> <param-name>contextConfigLocation</param-name>
> <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
> </context-param>
> <listener>
> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
> </listener>
>
> <servlet>
> <display-name>CXF Servlet</display-name>
> <servlet-name>CXFServlet</servlet-name>
> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
> <load-on-startup>1</load-on-startup>
> </servlet>
> <servlet-mapping>
> <servlet-name>CXFServlet</servlet-name>
> <url-pattern>/services/*</url-pattern>
> </servlet-mapping>
>
> <welcome-file-list>
> <welcome-file>index.jsp</welcome-file>
> </welcome-file-list>
> </web-app>
>
> The client context and code are:
>
> <beans
> xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:jaxws="http://cxf.apache.org/jaxws"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
>
> <import resource="classpath:META-INF/cxf/cxf.xml" />
> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>
> <!-- Client side: -->
> <jaxws:client id="helloClient" address="http://localhost:8080/services/HelloWorld" serviceClass="net.cndc.utility.email.ws.HelloWorld" />
>
> </beans>
>
> package net.cndc.utility.email.test;
>
> import net.cndc.utility.email.ws.HelloWorld;
>
> import org.springframework.context.ApplicationContext;
> import org.springframework.context.support.ClassPathXmlApplicationContext;
>
> public class WsTest {
>
> public static void main(String[] args) {
> ApplicationContext context = new ClassPathXmlApplicationContext(
> new String[] {"applicationContext-client.xml"});
> HelloWorld client = (HelloWorld) context.getBean("helloClient");
> String msg = client.sayHi("ding dong da dong");
> System.out.println("WS called - response: "+msg);
> }
> }
>
> And finally, the error is:
>
> Jul 2, 2009 1:45:49 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
> INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1a05308: display name [org.springframework.context.support.ClassPathXmlApplicationContext@1a05308]; startup date [Thu Jul 02 13:45:49 CDT 2009]; root of context hierarchy
> Jul 2, 2009 1:45:49 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource [applicationContext-client.xml]
> Jul 2, 2009 1:45:49 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource [META-INF/cxf/cxf.xml]
> Jul 2, 2009 1:45:49 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource [META-INF/cxf/cxf-extension-soap.xml]
> Jul 2, 2009 1:45:49 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource [META-INF/cxf/cxf-servlet.xml]
> Jul 2, 2009 1:45:50 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
> INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@1a05308]: org.springframework.beans.factory.support.DefaultListableBeanFactory@12a0f6c
> Jul 2, 2009 1:45:50 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
> INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@12a0f6c: defining beans [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.transport.servlet.ServletTransportFactory,helloClient.proxyFactory,helloClient]; root of factory hierarchy
> Jul 2, 2009 1:45:50 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
> INFO: Creating Service {http://ws.email.utility.cndc.net/}HelloWorldService from class net.cndc.utility.email.ws.HelloWorld
> Jul 2, 2009 1:45:50 PM org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Could not send Message.
> at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:471)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:301)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253)
> at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:121)
> at $Proxy34.sayHi(Unknown Source)
> at net.cndc.utility.email.test.WsTest.main(WsTest.java:14)
> Caused by: java.io.IOException: Not Found
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2064)
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2015)
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1940)
> at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
> at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627)
> at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> ... 8 more
> Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Could not send Message.
> at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:141)
> at $Proxy34.sayHi(Unknown Source)
> at net.cndc.utility.email.test.WsTest.main(WsTest.java:14)
> Caused by: java.io.IOException: Not Found
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2064)
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2015)
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1940)
> at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
> at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627)
> at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:471)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:301)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253)
> at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:121)
> ... 2 more
>
>
>