Re: T5.2 and CXF / SOAP
Thanks! That should be very helpful. I may be doing attachments for pictures and integrating with .NET, so the MTOM stuff should come in handy. Norman Franke Answering Service for Directors, Inc. www.myasd.com On Sep 27, 2011, at 8:30 AM, Ulrich Stärk wrote: 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 ListFoo 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(ConfigurationString 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:
Re: T5.2 and CXF / SOAP
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 ListFoo 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(ConfigurationString 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
Re: T5.2 and CXF / SOAP
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
Re: T5.2 and CXF / SOAP
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
Re: T5.2 and CXF / SOAP
I would like to see this as well, perhaps this will help with my Metro web services integration. Thanks! On Sep 26, 2011, at 11:33 AM, 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
Re: T5.2 and CXF / SOAP
Yes over the long run you will be way better served by CXF than Metro, 2 years ago I would have chosen Metro, but no longer. Shame I can't help you integrate it with Tap. On Sep 23, 2011, at 6:27 PM, 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
T5.2 and CXF / SOAP
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