2010-07-26 25 views
0

Utilisation Grails et CXF, j'ai publié un petit service Web qui ressemble à ceciComment activer MTOM côté serveur pour un service Web publié à l'aide de Grails avec CXF?

class TestService { 

    static expose=['cxf'] 

    int pushData(int id, DataHandler data) { 

     //receives data for a specific ID, 
     return 1 
    } 
} 

La chose est que je voudrais maintenant permettre MMD pour le transfert des DataHandler-données. Normalement, avec Groovy et CXF (ou JAX-WS) Je publierai TestService comme Endpoint

Endpoint ep = Endpoint.publish("http://localhost:9000/test", new TestService()) 
SOAPBinding binding = (SOAPBinding)ep.getBinding(); 
binding.setMTOMEnabled(true); 

Et tout est fait.

Maintenant que j'utilise Grails pour faire mes publications, je n'arrive pas à comprendre comment obtenir le Endpoint. Est-ce que quelqu'un sait comment cela pourrait être accompli?

Répondre

2

Supposons que l'interface de service ressemble à ce

@MTOM 
@WebService(targetNamespace="http://soap.services.website.com/", 
     endpointInterface="com.armorize.web.services.ServiceInterface") 
public interface ServiceInterface 

    int uploadData(@XmlMimeType("application/octet-stream") DataHandler code) ; 

Les attributs du critère d'évaluation peuvent être spécifiées dans le CxF-servlet.xml. Avec un service d'implémentation appelé ServiceImpl, vous devez ajouter les spécifications suivantes

<jaxws:endpoint id="endpointID" 
     implementor="com.website.web.services.ServiceImpl" address="/test"> 

     <jaxws:properties> 
      <entry key="mtom-enabled" value="true" /> 
      <entry key="mtom-threshold" value="0" /> 
     </jaxws:properties>