Java 在JBoss 6 EAP上启用JAX-WS MTOM

Java 在JBoss 6 EAP上启用JAX-WS MTOM,java,web-services,soap,jax-ws,jboss6.x,Java,Web Services,Soap,Jax Ws,Jboss6.x,我想启用MTOM。但当我从客户端打电话时,我总是收到NullPointerException。 我使用JAXWS和METRO作为它的实现 下面是我作为soap公开的impl类 @MTOM @WebService(endpointInterface = "com.poc.control.Controller") @BindingType(value=javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING) public class Contro

我想启用MTOM。但当我从客户端打电话时,我总是收到NullPointerException。 我使用JAXWS和METRO作为它的实现

下面是我作为soap公开的impl类

@MTOM
@WebService(endpointInterface = "com.poc.control.Controller")
@BindingType(value=javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING) 
public class ControllerImpl implements Controller{

    public String uploadData(Image data){

        if(data != null)
            return "Upload Successfully!!";
        return "check";
    }


}
下面是我访问上述内容的客户端代码:

public class Test {

    private static final String wsUrl = "http://localhost:8080/soappoc/check?wsdl";

    public static void main(String[] args) throws IOException, MyException{
        URL url = new URL(wsUrl);
        QName qName = new QName("http://impl.control.poc.com/", "ControllerImplService");
        Service service = Service.create(url, qName);
        Controller controller = service.getPort(Controller.class);

        //enable MTOM in client

        BindingProvider bp = (BindingProvider) controller;
        SOAPBinding binding = (SOAPBinding) bp.getBinding();
        binding.setMTOMEnabled(true);

        BufferedImage originalImage = ImageIO.read(new File("C:\\Users\\sorabh2169\\Desktop\\photo\\IMG_0003.JPG"));
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write( originalImage, "png", baos );
        baos.flush();
        byte[] imageInByte = baos.toByteArray();
        baos.close();

        String status = controller.uploadData(imageInByte);
        System.out.println("Status is :: " + status);

    }
}
但是运行上述代码时,我总是会得到NullPointerException

Exception in thread "main" javax.xml.ws.WebServiceException: java.lang.NullPointerException
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:194)
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:93)
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
    at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
    at com.sun.xml.ws.client.Stub.process(Stub.java:222)
    at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:135)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
    at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
    at $Proxy28.uploadData(Unknown Source)
    at com.testpoc.Test.main(Test.java:49)
如果您检查日志,您会发现它说$Proxy28.uploadData(未知源) 我认为这就是问题所在

但如何处理这个问题,出了什么问题。
请告知。

您还可以添加服务器日志吗?在服务器日志中没有打印任何内容。甚至我在我的soap公开类上设置了调试点,但调用从未出现过。如果我删除@MTOM,那么映像将成功上传。但是我想用MTOM上传,但这就是问题的原因。我想,这与我使用的应用服务器有关。因为如果我通过java主程序发布我的服务,即Endpoint.publish(bindingURI,service)的帮助;我可以使用MTOM成功上传文件。