Образец кода JAX-WS MTOM - PullRequest
3 голосов
/ 11 июля 2009

Я ищу простой рабочий пример кода MTOM (сервис + клиент) с использованием JAX-WS RI или на основе Axis2.

Я гуглил слово только, чтобы найти фрагменты и коды, которые не просто работают!

Я хочу отправить вложения в формате PDF запрашивающему клиенту веб-службы.

1 Ответ

0 голосов
/ 11 июля 2009

похоже, что я задал вопрос немного раньше :) Вот пример кода jax-ws с MTOM .. я могу управлять самостоятельно ..

Слышал и читал, что даже с axis2 + mtom есть некоторые проблемы .. документация тоже очень плоха в axis2. Также производительность сомнительна (хотя с XMLBeans не уверен в ADB) ... ссылка: http://weblogs.java.net/blog/kohsuke/archive/2007/02/jaxws_ri_21_ben.html

package webservice;

import java.io.File;
import javax.activation.DataHandler;
import org.jvnet.staxex.StreamingDataHandler;

/**
 *
 * @author Raghavendra_Samant
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        try { // Call Web Service Operation
            com.xxx.labelgeneration.LabelGeneratorService service = new com.xxx.labelgeneration.LabelGeneratorService();
            com.xxx.labelgeneration.LabelGenerator port = service.getLabelGeneratorPort();
            // TODO initialize WS operation arguments here
            java.lang.String name = "dynamic.pdf";
            // TODO process result here
            byte[] result = port.getFile(name);

            System.out.println("Result = "+result.length);
        } catch (Exception ex) {
            // TODO handle custom exceptions here
        }


    }
}

Серверная сторона

package com.xxx.LabelGeneration;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.soap.MTOM;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;

/**
 *
 * @author Raghavendra_Samant
 */
@WebService()
@MTOM
public class LabelGenerator {

    /**
     * Web service operation
     */
    @WebMethod(operationName = "getFile")
        public DataHandler  getFile(@WebParam(name = "name") String fileName) {
        //TODO write your implementation code here:

        return new DataHandler(new FileDataSource(fileName));

    }
}
...