On Monday 11 October 2010 8:50:16 am Benson Margulies wrote: > I know a little more about this now .... > > When I used Simple, the effective MTOM threshold was zero. So the data > was always in the InputStream of the data handler. > > Well, hmm, with the code below, the data is ending up inline > (presumably because it isn't big enough, or because I somehow failed > below to turn on MTOM for the client side), and then the DataHandler > has no input stream, just an object. This strikes me, as the > implementor of the Aegis databinding, as perhaps a bug in the data > binding, since it's a pain to have to check both places in the data > handler, and so even if the data arrives out-of-line it would, I > think, be better to also set up an input stream.
Yea. I agree. Making them consistent would be a good thing For now, you can probably change the MTOM annotation to: @MTOM(threshold = 1) or something real small. (not sure if 0 works) Dan > > On Mon, Oct 11, 2010 at 8:20 AM, Benson Margulies <bimargul...@gmail.com> wrote: > > This would normally belong on user but it's a sort of followup to the > > Simple conversation... > > > > I switched my MTOM-ish service to JAX-WS, and now my MTOM items > > disappear. My unit tests all fail with null pointers since the data > > handlers have nothing in them. It all worked fine with Simple (and > > using properties to enable MTOM).... > > > > So, I made the service side look like: > > > > SEI: > > > > @WebService > > public interface DocumentDatabase { ... } > > > > Implementation class: > > > > @WebService(endpointInterface = "com.basistech.jdd.DocumentDatabase") > > @MTOM > > @BindingType(SOAPBinding.SOAP11HTTP_MTOM_BINDING) > > public class ... > > > > Service factory: > > > > JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean(); > > svrFactory.setDataBinding(new AegisDatabinding()); > > svrFactory.setServiceClass(DocumentDatabase.class); > > svrFactory.setAddress("http://localhost:" + > > documentServicePort + "/documentDatabase"); > > svrFactory.setServiceBean(impl); > > server = svrFactory.create(); > > > > > > Client factory: > > > > JaxWsClientFactoryBean clientFactory = new JaxWsClientFactoryBean(); > > clientFactory.setBindingId(SOAPBinding.SOAP11HTTP_MTOM_BINDING); > > JaxWsProxyFactoryBean factory = new > > JaxWsProxyFactoryBean(clientFactory); > > factory.setDataBinding(new AegisDatabinding()); > > // perhaps not needed given the endpointInterface annotation > > factory.setServiceClass(DocumentDatabase.class); > > factory.setAddress(serviceUrl); > > return (DocumentDatabase) factory.create(); -- Daniel Kulp dk...@apache.org http://dankulp.com/blog