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

Используя 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 ответ

Решение

Давайте предположим, что интерфейс сервиса выглядит так

@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>
Другие вопросы по тегам