IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

[axis2] java.lang.IllegalArgumentException: Null OutputStream specified


Sujet :

Services Web Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    18
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par d�faut [axis2] java.lang.IllegalArgumentException: Null OutputStream specified
    Bonjour � tous,

    J'ai un souci pour faire du swa attachment sous axis2 pour envoyer depuis un client un fichier sur un serveur.
    Je g�n�re mon stub et mes objects de messages avec wsdl2java.
    Je ne fais pas du MTOM en d�clarant un element binary64 dans le wsdl car j'utilise Xmlbeans comme databindings et j'ai des outofmemory et j'ai cru comprendre que �a n'�tais pas vraiment possible de passer outre car Xmlbeans charge forcement les elements en m�moire.

    Bref, j'ai donc voulu tester la m�thode swa d�crite ici: http://ws.apache.org/axis2/1_5_1/mtom-guide.html mais j'ai cette exception:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    java.lang.IllegalArgumentException: Null OutputStream specified
    	at org.apache.xmlbeans.impl.store.Cursor._save(Cursor.java:577)
    	at org.apache.xmlbeans.impl.store.Cursor.save(Cursor.java:2544)
    	at org.apache.xmlbeans.impl.values.XmlObjectBase.save(XmlObjectBase.java:180)
    	at maltese.corto.communication.soapgenerated.MalteseStub$46.serialize(MalteseStub.java:7236)
    	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerializeAndConsume(OMSourcedElementImpl.java:738)
    	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:966)
    	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:995)
    	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:254)
    	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:242)
    	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:995)
    	at org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:498)
    	at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:72)
    	at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
    	at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
    	at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
    	at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
    	at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
    	at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
    	at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
    	at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
    	at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:542)
    	at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199)
    	at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
    	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
    	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
    	at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
    	at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
    	at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
    	at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
    ...
    Alors �a m'embete un peu d'utiliser cette methode swa car je doit aller taper dans le stub g�n�r� pour avoir acc�s au messagcontext. mais je pourrais p� abstraire �a lorsque j'aurais r�ussi � le faire marcher...
    Voici le code de mon op�ration dans mon stub g�n�r�:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     public monOperationRspDocument monOperation(
     
       monOperationReqDocument monOperationReq62)
     
       throws java.rmi.RemoteException
     
       {
          org.apache.axis2.context.MessageContext _messageContext = null;
          try
          {
             org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(_operations[14].getName());
             _operationClient.getOptions().setAction("monOperation");
             _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
             _operationClient.getOptions().setProperty(Constants.Configuration.ENABLE_SWA, Constants.VALUE_TRUE);
     
             addPropertyToOperationClient(_operationClient, org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR, "&");
     
             // create a message context
             _messageContext = new org.apache.axis2.context.MessageContext();
     
             // create SOAP envelope with that payload
             org.apache.axiom.soap.SOAPEnvelope env = null;
     
             env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()), monOperationReq62, optimizeContent(new javax.xml.namespace.QName("monService", "monOperation")));
     
             //adding SOAP soap_headers
             _serviceClient.addHeadersToEnvelope(env);
             // set the message context with that soap envelope
             _messageContext.setEnvelope(env);
             // add attachment
             FileDataSource fileDataSource = new FileDataSource("test-resources/mtom/test.jpg");
             DataHandler dataHandler = new DataHandler(fileDataSource);
             _messageContext.addAttachment("FirstAttachment", dataHandler);
     
             // add the message contxt to the operation client
             _operationClient.addMessageContext(_messageContext);
     
             //execute the operation client
             _operationClient.execute(true);
    Je m'arrete l� car l'exception est jet�e dans excecute...

    Je pr�cise que lorsque je commente la ligne
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    _operationClient.getOptions().setProperty(Constants.Configuration.ENABLE_SWA, Constants.VALUE_TRUE);
    je communique avec mon serveur, mais je n'ai pas d'attachment...

    Voil�, si vous avez une id�e sur une property � setter ou autre je suis tr�s preneur! merci d'avance!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    18
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par d�faut
    Pour info, mon exp�rience:
    Bon et bien il semble qu'avec les fichiers g�n�r�s il soit impossible d'adresser ce probl�me.
    Pour adresser mon besoin d'attachement cot� client, il faut instancier son objet service et cr�er l'enveloppe axis2 � la mano, c'est � dire sans passer par les fichiers g�n�r�s.

    Cot� serveur, il faut faire de m�me. Du coup, il convient de d�finir son propre messageReceiver dans le service.xml. Ce messageReceiver perso semble devoir h�riter de RawXMLINOutMessageReceiver (le receiver par d�faut h�rite seulement de AbstractInOutMessageReceiver) sous peine de voir axis2 nous filer un contexte sans les attachements.

    En impl�mentant ce genre de solution, il est donc possible de g�rer les attachements autant par SWA qu'en MTOM. En attendant qu'Axis2 fournisse une version o� XMLBeans g�re le MTOM.

Discussions similaires

  1. java.lang.IllegalArgumentException: No bean specified
    Par cecile38 dans le forum Struts 1
    R�ponses: 18
    Dernier message: 08/04/2011, 14h55
  2. R�ponses: 1
    Dernier message: 18/08/2010, 11h36
  3. java.lang.IllegalArgumentException: vendorName == null!
    Par spax dans le forum API standards et tierces
    R�ponses: 8
    Dernier message: 16/10/2008, 11h47
  4. java.lang.IllegalArgumentException: No bean specified
    Par Melaba dans le forum Struts 1
    R�ponses: 9
    Dernier message: 31/07/2008, 16h03
  5. R�ponses: 9
    Dernier message: 03/06/2007, 21h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo