Как включить MTOM на стороне сервера для веб-службы, опубликованной с использованием Grails с CXF? - PullRequest
0 голосов
/ 26 июля 2010

Используя Grails и CXF, я опубликовал небольшой веб-сервис, который выглядит следующим образом

class TestService {

    static expose=['cxf']

    int pushData(int id, DataHandler data) {

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

Дело в том, что сейчас я хотел бы включить MTOM для передачи данных DataHandler.Обычно с 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.Кто-нибудь знает, как это можно сделать?

1 Ответ

2 голосов
/ 02 августа 2010

Давайте предположим, что интерфейс службы выглядит следующим образом

@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>
...