2010-07-26 56 views
0

使用Grails和CXF,我已經發表,看起來像這樣如何在服務器端啓用使用Grails和CXF發佈的Web服務的MTOM?

class TestService { 

    static expose=['cxf'] 

    int pushData(int id, DataHandler data) { 

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

的事情是,我現在想啓用MTOM爲DataHandler的數據的傳輸小型Web服務。通常使用Groovy和CXF(或JAX-WS)我會發布TestService作爲Endpoint

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

而且所有的完成。

現在,我使用的Grails做我出版我無法弄清楚如何獲得Endpoint。有誰知道這可以做到嗎?

回答

2

讓我們假設服務接口看起來像這樣

@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) ; 

端點的屬性可以在CXF-servlet.xml中指定。與實施服務,稱爲ServiceImpl,您需要添加以下規格

<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> 
相關問題