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 :

Erreur avec MTOM


Sujet :

Services Web Java

  1. #1
    Membre du Club

    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 50
    Points : 49
    Points
    49
    Billets dans le blog
    1
    Par défaut Erreur avec MTOM
    Bonjour,

    J'ai essayé d'écrire un petit webservice qui permet de transférer des fichiers via MTOM.
    Malheureusement, je n'obtiens qu'une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Avertissement: Interceptor for {http://mediStor.org/x-rays/storeImpl/CXF}XRayStorageService#{http://mediStor.org/x-rays/storeImpl/CXF}store has thrown exception, unwinding now
    org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
    	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:243)
    	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:62)
    (j'essaie d'implémenter l'exemple présenté dans http://cxf.apache.org/docs/mtom.html )

    J'ai cru que je n'avais pas activer les mtom, mais je l'ai fait et j'ai toujours la même erreur (il se peut que je ne le fasse pas correctement) :

    Code Configuration serveur : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <bean id="impl" class="org.medistor.x_rays.storeimpl.cxf.XRayStorageImpl" />
     
    <jaxws:server serviceClass="org.medistor.x_rays.storeimpl.cxf.XRayStorage" serviceBean="#impl">
    	<jaxws:properties>
    		<entry key="mtom-enabled" value="true"></entry>
    	</jaxws:properties>
    </jaxws:server>

    Code configuration client : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
    factory.setAddress("http://localhost:8080/Server");
    factory.setServiceClass(XRayStorage.class);		    
     
    @SuppressWarnings("restriction")
    BindingProvider clientBP = (BindingProvider) factory.create();
    SOAPBinding binding = (SOAPBinding)clientBP.getBinding();
    binding.setMTOMEnabled(true);
     
    XRayStorage client = (XRayStorage) clientBP;

  2. #2
    Membre du Club

    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 50
    Points : 49
    Points
    49
    Billets dans le blog
    1
    Par défaut
    Bon, j'ai toujours ce problème…
    J'ai modifié un peu mon client :

    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
    JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
    factory.setAddress("http://localhost:8080/Server");
    factory.setServiceClass(XRayStorage.class);
     
    File inFile = new File("c:/in.log");
    inFile.getParentFile().mkdirs();
    PrintWriter printWriterIn = new PrintWriter(inFile);
    LoggingInInterceptor logIn = new LoggingInInterceptor(printWriterIn);
     
    File outFile = new File("c:/out.log");
    outFile.getParentFile().mkdirs();
    PrintWriter printWriterOut = new PrintWriter(outFile);
    LoggingOutInterceptor logOut = new LoggingOutInterceptor(printWriterOut);
     
    factory.getInInterceptors().add(logIn);
    factory.getOutInterceptors().add(logOut);
     
    XRayStorage client = (XRayStorage) factory.create();
    ((SOAPBinding)((BindingProvider)client).getBinding()).setMTOMEnabled(true);
     
    System.out.println("intialisation...");
    XRayType xray = new XRayType();
    xray.setPatientName("Moi");
    xray.setPatientNumber(2);
     
    DataSource dataSource = new FileDataSource("C:/Users/Schnuffel/Pictures/Capture.PNG");
    DataHandler data = new DataHandler(dataSource);
    xray.setImageData(data);
    System.out.println("Invoking store...");
    XRayResponseType res = client.store(xray);
     
     
    System.out.println("store.result=" + res.isSuccess());
    Et j'ai dans in.log :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Inbound Message
    ----------------------------
    ID: 1
    Response-Code: 302
    Encoding: ISO-8859-1
    Content-Type: 
    Headers: {Date=[Mon, 24 Feb 2014 10:08:05 GMT], Location=[http://localhost:8080/Server/], Server=[Apache-Coyote/1.1], transfer-encoding=[chunked]}
    --------------------------------------
    Et voici la stacktrace complète :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    févr. 24, 2014 11:08:05 AM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
    Avertissement: Interceptor for {http://mediStor.org/x-rays/storeImpl/CXF}XRayStorageService#{http://mediStor.org/x-rays/storeImpl/CXF}store has thrown exception, unwinding now
    org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
    	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:243)
    	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:62)
    	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
    	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:800)
    	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1592)
    	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1490)
    	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1309)
    	at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:50)
    	at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:229)
    	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
    	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:622)
    	at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
    	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
    	at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
    	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
    	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)
    	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
    	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
    	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:133)
    	at com.sun.proxy.$Proxy39.store(Unknown Source)
    	at org.medistor.x_rays.storeimpl.cxf.Client.main(Client.java:90)
    Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
     at [row,col {unknown-source}]: [1,0]
    	at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:677)
    	at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2116)
    	at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2022)
    	at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1114)
    	at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1137)
    	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:141)
    	... 20 more
     
    Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Error reading XMLStreamReader.
    	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:155)
    	at com.sun.proxy.$Proxy39.store(Unknown Source)
    	at org.medistor.x_rays.storeimpl.cxf.Client.main(Client.java:90)
    Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
     at [row,col {unknown-source}]: [1,0]
    	at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:677)
    	at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2116)
    	at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2022)
    	at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1114)
    	at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1137)
    	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:141)
    	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:62)
    	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
    	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:800)
    	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1592)
    	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1490)
    	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1309)
    	at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:50)
    	at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:229)
    	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
    	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:622)
    	at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
    	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
    	at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
    	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
    	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)
    	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
    	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
    	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:133)
    	... 2 more

  3. #3
    Membre du Club

    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 50
    Points : 49
    Points
    49
    Billets dans le blog
    1
    Par défaut
    Comme je le pensais, il s'agissait d'une erreur stupide :
    http://localhost:8080/Server -> http://localhost:8080/Server/services/Server

    (Je l'ai trouvé en rajoutant un '/' à la fin de Server et il m'affichait ce qu'il y avait dans index.jsp et n’exécutait pas le service en lui-même)

    Bon maintenant c'est parti pour les WS-Security. Encore un bon morceau en perspective.

    EDIT : D'ailleurs, si vous connaissez des bons tutos pour gérer le username token dans WS-security avec apache cxf, je suis preneur !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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