Jax-ws : Java SAVON exception :MustUnderstand en-têtes:[{http://www.w3.org/2005/08/addressing}Action
Je suis à l'aide de Jax-ws pour mettre en oeuvre application client pour la caméra IP Onvif, je suis en envoyant une demande à l'appareil photo pour créer PullPointSubscription ,Il semble que la caméra comprend la demande et des processus de la demande et l'envoi de la réponse correcte , mais le client jax-ws code déclenche une exception
MustUnderstand headers:[{http://www.w3.org/2005/08/addressing}Action] are not understood
Je ne comprends pas quel est le problème exactement? N'importe qui peut expliquer quel est le problème et comment le résoudre?
Les détails de l'exception
an 29, 2012 11:43:48 AM com.sun.xml.ws.protocol.soap.MUTube getMisUnderstoodHeaders
INFO: Element not understood={http://www.w3.org/2005/08/addressing}Action
javax.xml.ws.soap.SOAPFaultException: MustUnderstand headers:[{http://www.w3.org/2005/08/addressing}Action] are not understood
at com.sun.xml.ws.protocol.soap.MUTube.createMUSOAPFaultException(MUTube.java:148)
at com.sun.xml.ws.protocol.soap.ClientMUTube.processResponse(ClientMUTube.java:109)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:651)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
at com.sun.xml.ws.client.Stub.process(Stub.java:323)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:161)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:113)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:144)
at $Proxy46.createPullPointSubscription(Unknown Source)
at Test.SubInEventLast(Test.java:173)
at Test.main(Test.java:139)
La demande de message soap est
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">
<S:Body>
<ns6:CreatePullPointSubscription xmlns:ns2="http://www.w3.org/2005/08/addressing"
xmlns:ns3="http://docs.oasis-open.org/wsn/b-2"
xmlns:ns4="http://docs.oasis-open.org/wsrf/bf-2"
xmlns:ns5="http://docs.oasis-open.org/wsn/t-1"
xmlns:ns6="http://www.onvif.org/ver10/events/wsdl"
xmlns:ns7="http://www.onvif.org/ver10/schema"
xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
xmlns:ns9="http://www.w3.org/2004/08/xop/include"
xmlns:ns10="http://docs.oasis-open.org/wsrf/r-2">
<ns6:Filter>
<ns3:TopicExpression xmlns="http://docs.oasis-open.org/wsn/b-2"
xmlns:tns1="http://www.onvif.org/ver10/topics"
Dialect="http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet">
tns1:Device
</ns3:TopicExpression>
</ns6:Filter>
<ns3:InitialTerminationTime>PT1M</ns3:InitialTerminationTime>
</ns6:CreatePullPointSubscription>
</S:Body>
</S:Envelope>
et c'est la réponse soap
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsa5="http://www.w3.org/2005/08/addressing"
xmlns:xmime5="http://www.w3.org/2005/05/xmlmime"
xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2"
xmlns:wstop="http://docs.oasis-open.org/wsn/t-1"
xmlns:tt="http://www.onvif.org/ver10/schema"
xmlns:wsrf-r="http://docs.oasis-open.org/wsrf/r-2"
xmlns:tan1="http://www.onvif.org/ver10/analytics/wsdl/RuleEngineBinding"
xmlns:tan="http://www.onvif.org/ver10/analytics/wsdl"
xmlns:tan2="http://www.onvif.org/ver10/analytics/wsdl/AnalyticsEngineBinding"
xmlns:tds="http://www.onvif.org/ver10/device/wsdl"
xmlns:tev1="http://www.onvif.org/ver10/events/wsdl/NotificationProducerBinding"
xmlns:tev2="http://www.onvif.org/ver10/events/wsdl/EventBinding"
xmlns:tev3="http://www.onvif.org/ver10/events/wsdl/SubscriptionManagerBinding"
xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2"
xmlns:tev4="http://www.onvif.org/ver10/events/wsdl/PullPointSubscriptionBinding"
xmlns:tev="http://www.onvif.org/ver10/events/wsdl"
xmlns:timg="http://www.onvif.org/ver10/imaging/wsdl"
xmlns:tptz="http://www.onvif.org/ver10/ptz/wsdl"
xmlns:trt="http://www.onvif.org/ver10/media/wsdl"
xmlns:ter="http://www.onvif.org/ver10/error"
xmlns:tns1="http://www.onvif.org/ver10/topics"
xmlns:tnsaxis="http://www.axis.com/2009/event/topics">
<SOAP-ENV:Header>
<wsa5:Action SOAP-ENV:mustUnderstand="true">http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/CreatePullPointSubscriptionResponse</wsa5:Action>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<tev:CreatePullPointSubscriptionResponse>
<tev:SubscriptionReference>
<wsa5:Address>http://192.168.0.151/onvif/services</wsa5:Address>
<wsa5:ReferenceParameters><dom0:SubscriptionId xmlns:dom0="http://www.axis.com/2009/event">3</dom0:SubscriptionId>
</wsa5:ReferenceParameters>
</tev:SubscriptionReference>
<wsnt:CurrentTime>2010-10-27T09:11:42Z</wsnt:CurrentTime>
<wsnt:TerminationTime>2010-11-24T09:11:42Z</wsnt:TerminationTime></tev:CreatePullPointSubscriptionResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
J'ai peur que l'espace de noms à vous reporter à (WS-Addressing 1.0) n'est pas pris en charge par JAX-WS. Y avait-il des mises en garde par
Je vais avoir le même problème. Quand j'ai fini
wsimport
lorsque vous avez généré votre JAX-WS artefacts?Je vais avoir le même problème. Quand j'ai fini
wsimport
, l'avertissement suivant est affiché: inconnu extensibilité de l'élément ou de l'attribut "EndpointReference" (dans l'espace de noms "w3.org/2005/08/addressing")
OriginalL'auteur Mike Albren | 2012-01-29
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce même problème avec un appareil particulier et il m'a fallu quelques jours de recherche et d'essai et d'erreur pour trouver une solution (presque par hasard). J'ai été en mesure de résoudre ce problème en ajoutant un Gestionnaire personnalisé pour le port. Le gestionnaire doit seulement fournir le QName pour le WS-Addressing Action de l'en-tête (il n'a pas besoin de faire quoi que ce soit quand handleMessage est appelé).
C'est ce qui a fonctionné pour moi:
Puis ajouter le Gestionnaire de liaison du gestionnaire de la chaîne d':
OriginalL'auteur Steven Dillingham
Dans mon cas, cela permet de :
passant
new javax.xml.ws.soap.AddressingFeature()
commeWebServiceFeature
.OriginalL'auteur Majka
Solution pour RÉSOUDRE
"MustUnderstand en-têtes:[{http://www.w3.org/2005/08/addressing}Action] ne sont pas compris"
"Le serveur a envoyé le code d'état HTTP 415: Ne peut pas traiter le message, car le type de contenu application/soap+xml;charset="utf-8";"
Utiliser NetBeans version 7.1 ou supérieur à générer Client de Service Web.
( NetBeans va utiliser javax.xml.ws.Service)
Donc CORRIGER certaines choses dans le Code:
Lorsque vous instanciez votre service à la clientèle, vous avez besoin de passer à la "fonctionnalité" param.
La chose la plus importante est que vous devez créer un service à l'aide de la "fonctionnalité":
"javax.xml.ws.Service.getPort(wsdlLocation, featureA, FeatureB)"
Après, vous pouvez migrer le code à un autre IDE comme Eclipse".
OriginalL'auteur Caio Henrique
Une autre façon de résoudre ce problème est d'ajouter les "-XadditionalHeaders" argument de la wsimport de commande. Cela va ajouter de la demande/réponse de paramètres d'en-tête de la méthode de service.
OriginalL'auteur Aihal
oui,je l'ai résolu
OriginalL'auteur lei king