This is a problem with 2.0 unfortunately. You can either use the
2.0.1release candidate:

http://people.apache.org/~dkulp/stage_cxf/2.0.1-incubator_take3/

Or you include also import /META-INF/cxf/cxf-extension-http-jetty.xml. The
one downside with that is that it requires jetty to be on your classpath.
(Also, ordering of the imports matters. I think the servlet one would need
to be after the http-jetty one, but I could be wrong).

Cheers,
- Dan

On 8/9/07, Bryan Hansen <[EMAIL PROTECTED]> wrote:
>
> Walking through the documentation on creating a service with spring:
>
> http://cwiki.apache.org/CXF20DOC/writing-a-service-with-spring.html
>
> It isn't really clear about how the service gets looked up and the samples
> don't have an example similar to the documentation. (They have more in
> depth
> stuff going on, but I just want to mess around with this basic service
> first.)
>
> I created a service like the documentation above has listed:
>
> package org.foo.service.web;
> import javax.jws.WebService;
>
> @WebService(targetNamespace = "http://foo.org/hello_world";,
>             endpointInterface = "org.foo.service.web.HelloWorld")
> public class HelloWorldImpl implements HelloWorld {
>
>     public String sayHi(String text) {
>         return "Hello " + text;
>     }
> }
>
> and a client:
>
> package org.foo.service.web;
>
> import javax.jws.WebService;
>
> @WebService(targetNamespace = "http://foo.org/hello_world";, name =
> "HelloWorld")
> public interface HelloWorld {
>     String sayHi(String text);
> }
>
> The Spring service (snippet) configuration is:
>
>     <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"
>       implementor="org.foo.service.web.HelloWorldImpl"
>       address="/HelloWorld">
>           <jaxws:features>
>              <bean class="org.apache.cxf.feature.LoggingFeature"/>
>         </jaxws:features>
>     </jaxws:endpoint>
>
>
> and the Spring client configuration is:
>
> <bean id="client" class="org.foo.service.web.HelloWorld"
>       factory-bean="clientFactory" factory-method="create"/>
>
>     <bean id="clientFactory" class="
> org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
>       <property name="serviceClass" value="org.foo.service.web.HelloWorld
> "/>
>       <property name="address" value="http://localhost:8080/foo/HelloWorld
> "/>
>     </bean>
>
> The service says that it deploys fine in the tomcat logs:
>
> Aug 9, 2007 9:49:38 AM
>
> org.apache.cxf.service.factory.ReflectionServiceFactoryBeanbuildServiceFromClass
> INFO: Creating Service
> {http://foo.org/hello_world}HelloWorldImplServicefrom class
> org.foo.service.web.HelloWorldImpl
>
> When I run the unit test though against the service I get this error:
>
> javax.xml.ws.soap.SOAPFaultException: Could not find destination factory
> for
> transport http://schemas.xmlsoap.org/soap/http
>     at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java
> :168)
>     at $Proxy42.sayHi(Unknown Source)
>     at org.lds.ticketing.integration.WebServiceClientTest.testWebService(
> WebServiceClientTest.java:15)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:39)
>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:585)
>     at junit.framework.TestCase.runTest(TestCase.java:168)
>     at junit.framework.TestCase.runBare(TestCase.java:134)
>     at org.springframework.test.ConditionalTestCase.runBare(
> ConditionalTestCase.java:69)
>     at junit.framework.TestResult$1.protect(TestResult.java:110)
>     at junit.framework.TestResult.runProtected(TestResult.java:128)
>     at junit.framework.TestResult.run(TestResult.java:113)
>     at junit.framework.TestCase.run(TestCase.java:124)
>     at junit.framework.TestSuite.runTest(TestSuite.java:232)
>     at junit.framework.TestSuite.run(TestSuite.java:227)
>     at org.junit.internal.runners.OldTestClassRunner.run(
> OldTestClassRunner.java:76)
>     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(
> JUnit4TestReference.java:38)
>     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
> TestExecution.java:38)
>     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
> RemoteTestRunner.java:460)
>     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
> RemoteTestRunner.java:673)
>     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
> RemoteTestRunner.java:386)
>     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
> RemoteTestRunner.java:196)
> Caused by: java.lang.RuntimeException: Could not find destination factory
> for transport http://schemas.xmlsoap.org/soap/http
>     at org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(
> SoapTransportFactory.java:148)
>     at org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(
> AbstractConduitSelector.java:73)
>     at org.apache.cxf.endpoint.UpfrontConduitSelector.prepare(
> UpfrontConduitSelector.java:61)
>     at org.apache.cxf.endpoint.ClientImpl.prepareConduitSelector(
> ClientImpl.java:421)
>     at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:250)
>     at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:204)
>     at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
>     at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java
> :134)
>     ... 22 more
>
> The unit test is this:
>
> import org.junit.Test;
> import
> org.foo.spring.test.AbstractTestNGTransactionalSpringIntegrationTests
> ;
> import org.foo.service.web.HelloWorld;
> import org.testng.Assert;
>
> public class WebServiceClientTest extends
> AbstractTestNGTransactionalSpringIntegrationTests {
>
>     @Test
>     public void testWebService() {
>
>         HelloWorld client = (HelloWorld) applicationContext.getBean
> ("client");
>
>         String hi = client.sayHi("service");
>
>         Assert.assertEquals(hi, "service", "Should be Equal");
>     }
>
> }
>
> What am I missing?
>
> Thanks,
>
> Bryan
>



-- 
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog

Reply via email to