Hi all,

i am trying to deploy a web service that accepts attachments. The method
exposed as web service is something like

*

public
**class* SubEcho {

*public* String echo(String [] msgs,String [] moreMsgs , DataHandler dh){

             System.
*out*.println("Message array 1's length : " +msgs.length);

*                       for*( *int* i=0 ;i<msgs. length;i++){

                             System.
*out*.println("Message from 1," +i+" : "+msgs[i]);

                      }

             System.
*out*.println("Message array 2's length : " +moreMsgs.length);

*                       for*( *int* i=0 ;i<moreMsgs. length;i++){

                             System.
*out*.println("Message from 2," +i+" : "+moreMsgs[i]);

                       }

             System.
*out*.println("Attachment received : "+ dh.getName ());

*              return* ("Echoed and Received");

}

And the client code is like .....
*

public
**class* TestClient_Attachment {

*public* *static* *void *main(String args1*[]){*

*try* {

*                    *RPCServiceClient serviceClient =
*new* RPCServiceClient();

*                    *Options options = serviceClient.getOptions();

*                    *EndpointReference targetEPR =
*new* EndpointReference*(* **
http://localhost:8080/axis2/services/EchoService);

*                   *options.setTo(targetEPR);

*                    *options.setProperty(Constants.Configuration.
*ENABLE_MTOM*, Constants.* VALUE_TRUE*);

*                    *String a[] = {
"a","b", "c"};

*                   *String b[] = {
"d","e", "f"};

*                    *DataHandler attachment1 =
*new* DataHandler(*new* FileDataSource("TestClient.java"));

*                   *QName *opEcho* =
*new* QName(" http://service.echo.my/xsd";, "echo");

*                    Object*[] *opEchoArgs* =
*new* Object[] { a,b,attachment1};

                   OMElement response = serviceClient.invokeBlocking(opEcho,
opEchoArgs);

}

  *catch* (AxisFault axisFault) {

                       axisFault.printStackTrace();

                     System.*out*.println(axisFault.getFaultCode());

  }

}

Runnig the client produces this exception stack trace at the server



SEVERE: Exception occurred while trying to invoke service method echo

org.apache.axis2.AxisFault: javax.activation.DataHandler; nested exception
is:

       java.lang.InstantiationException: javax.activation.DataHandler

       at org.apache.axis2.engine.DefaultObjectSupplier.getObject(
DefaultObjectSupplier.java:28)

       at org.apache.axis2.databinding.utils.BeanUtil.deserialize(
BeanUtil.java:261)

       at org.apache.axis2.databinding.utils.BeanUtil.processObject(
BeanUtil.java:549)

       at org.apache.axis2.databinding.utils.BeanUtil.ProcessElement(
BeanUtil.java:499)

       at org.apache.axis2.databinding.utils.BeanUtil.deserialize(
BeanUtil.java:442)

       at org.apache.axis2.rpc.receivers.RPCUtil.processRequest(
RPCUtil.java:109)

       at
org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(
RPCMessageReceiver.java:116)

       at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(
AbstractInOutSyncMessageReceiver.java:39)

       at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:493)

       at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(
HTTPTransportUtils.java:319)

       at org.apache.axis2.transport.http.HTTPWorker.service(
HTTPWorker.java:230)

       at
org.apache.axis2.transport.http.server.DefaultHttpServiceProcessor.doService
(DefaultHttpServiceProcessor.java:179

)

       at org.apache.http.protocol.HttpService.handleRequest(
HttpService.java:123)

       at
org.apache.axis2.transport.http.server.DefaultHttpServiceProcessor.run(
DefaultHttpServiceProcessor.java:251)

       at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask
(ThreadPoolExecutor.java:665)

       at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:690)

       at java.lang.Thread.run(Thread.java:595)

Caused by: java.lang.InstantiationException: javax.activation.DataHandler

       at java.lang.Class.newInstance0(Class.java:335)

       at java.lang.Class.newInstance(Class.java:303)

       at org.apache.axis2.engine.DefaultObjectSupplier.getObject(
DefaultObjectSupplier.java:26)

       ... 16 more



What can be the reason behind this????

Is there any other way to send attachments (using an
RPCServiceClient....just as the one above)



Thanks,

Anant

Reply via email to