Sure: First you need a CXF servlet to process incoming requests targeted at the web service. Something along the lines of
public class MyCXFServlet extends CXFNonSpringServlet { private static final long serialVersionUID = -2887022453330372210L; @Override public void loadBus(ServletConfig servletConfig) throws ServletException { super.loadBus(servletConfig); Registry registry = (Registry) servletConfig.getServletContext().getAttribute(TapestryFilter.REGISTRY_CONTEXT_NAME); MyService impl = registry.getService("MyService", MyServiceImpl.class); Bus bus = this.getBus(); BusFactory.setDefaultBus(bus); EndpointImpl ep = (EndpointImpl) Endpoint.create(impl); ep.getFeatures().add(new WSAddressingFeature()); ep.setPublishedEndpointUrl("https://your.host/some/path/MyService"); ep.publish("/MyService"); } } As you can see we fetch the Tapestry IoC registry from the servlet context and ask it for a service called MyService that is then being published by CXF. The service interface looks something like import javax.activation.DataHandler; import javax.jws.WebService; @WebService public interface RelationAnalyzer { public List<Foo> doSomething(DataHandler file) throws IOException; } In this case doSomething() is working on a file upload and since this one is speaking to a .NET client we need to configure it to send files as MTOM attachments and configure it as a SOAP 1.2 HTTP Binding: import javax.activation.DataHandler; import javax.jws.WebService; import javax.xml.ws.BindingType; import javax.xml.ws.soap.SOAPBinding; @BindingType(SOAPBinding.SOAP12HTTP_MTOM_BINDING) @WebService(endpointInterface = "MyService", serviceName = "MyService") public class MyServiceImpl implements MyService { ... } Additionally, in your AppModule you have to tell Tapestry to ignore the path where your webservice is listening for requests (compare with above's setPublishedEndpointURL()): public static void contributeIgnoredPathsFilter(Configuration<String> configuration) { configuration.add("/some/path/.*"); } Since in previous versions, Tapestry didn't copy annotations from the service implementation to it's proxies, you have to bind the implementation itself: binder.bind(MyServiceImpl.class).withId("MyService"); This might be different now, I haven't tried the new feature though. And as a goodie from the web service client's app.config: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> </configSections> <system.serviceModel> <bindings> <customBinding> <binding name="MyServiceSoapBinding"> <mtomMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" messageVersion="Soap12" writeEncoding="utf-8"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> </mtomMessageEncoding> <httpsTransport manualAddressing="false" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous" realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" useDefaultWebProxy="true" requireClientCertificate="false"> </httpsTransport> </binding> </customBinding> </bindings> <client> <endpoint address="https://your.host/some/path/MyService" binding="customBinding" bindingConfiguration="MyServiceSoapBinding" contract="MyService.MyService" name="MyServiceImplPort" /> </client> </system.serviceModel> </configuration> HTH, Uli On 26.09.2011 17:33, Norman Franke wrote: > Care to share? > > Norman Franke > Answering Service for Directors, Inc. > www.myasd.com > > > > On Sep 26, 2011, at 9:20 AM, Ulrich Stärk wrote: > >> I have. >> >> On 24.09.2011 00:27, Norman Franke wrote: >>> So, since CXF appears to be way, way better documented, I'll ask. Has >>> anyone integrated Tapestry >>> 5's IoC with CXF? >>> >>> Norman Franke >>> Answering Service for Directors, Inc. >>> www.myasd.com >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org