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 :

[Web Service]Axis2 + Rampart


Sujet :

Services Web Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut [Web Service]Axis2 + Rampart
    Bonjour,

    Actuellement, j'essaye de développer un webservice qui utilise Axis2 + Rampart
    Pour mes premiers pas avec les WS, j'ai commence avec Axis2 (sans problème) ensuite, j'ai utilise les exemples de Rampart, mais j'ai l'erreur suivante:

    Exception in thread "main" org.apache.axis2.AxisFault: WSDoAllReceiver: Incoming message does not contain required Security header
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:271)
    at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:202)
    at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:579)
    at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508)
    at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:95)
    at xxxx.xx.xx.xxxxxxxx.xxxxxx.xxxxx.xxxxx.connect(xxxxx.java:31)
    at xxxx.xx.xx.xxxxxxxx.xxxxxx.xxxxx.<init>(xxxxx.java:15)
    at xxxx.xx.xx.xxxxxxxx.xxxxxx.xxxxx.main(xxxxx.java:32)

    Je tourne en rond sans trouver la solution.

    Ma config:

    Win XP
    Tomcat 6.0
    Axis2 1.1.1
    Rampart 1.1

    fichier service.xml :

    <module ref="rampart"/>
    <parameter name="InflowSecurity">
    <action>
    <items>UsernameToken Timestamp</items>
    <passwordCallbackClass>xxxx.xx.xx.xxxxxxxx.xxxxxxx.xxxxxxx.PWCBHandler</passwordCallbackClass>
    </action>
    </parameter>

    fichier build.xml:

    <module ref="rampart">
    <parameter name="OutflowSecurity">
    <action>
    <items>UsernameToken Timestamp</items>
    <user>xxxxxxxxx</user>
    <passwordCallbackClass>xxxx.xx.xx.xxxxxxxx.xxxxxxx.xxxxxxx.PWCBHandler</passwordCallbackClass>
    </action>
    </parameter>
    </module>

    Merci d'avance pour toutes suggestions.

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Points : 134
    Points
    134
    Par défaut
    Bonsoir

    La stackTrace est elle sur le client ou sur le serveur?
    Willy78

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Le stackTrace est du côté de mon application (client).

    J'ai activé le soapmonitor dans (axis2.xml) et lorsque j'utilise uniquement Axis2, je vois bien les messages circulant avec l'applet SOAPMonitor, mais avec Rampart activé il n'y aucun message...

    Merci

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Points : 134
    Points
    134
    Par défaut
    Bonsoir

    Il semble que la réponse du serveur ne contienne pas les entêtes de sécurité.
    De plus, je ne vois pas l'utilité de demander un mot de passe sur la réponse, cest incohérent.

    Peut être pourrais tu poster le fichier de configuration du serveur ou le service.xml du serveur?
    Willy78

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour/Bonsoir,

    Premièrement merci pour tes interventions.

    Voici quelques précisions, sur comment j'aborde le problème :

    Pour faire mes premiers essais et comprendre le fonctionnement des Web service j'utilise comme base, les exemples qui sont fournis avec Rampart.

    Le chaînage: [MonApplication client en (Java 6.0)] ---> [Tomcat 6.0 --> Axis2 1.1.1 --> Rampart1.1 --> MonService en (Java 6.0)].

    Bonne journée/soirée

    services.xml
    =========

    <?xml version="1.0" encoding="windows-1252" ?>

    <service name="MonService" scope="application">
    <description>Mon Service</description>
    <operation name="connect">
    <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </operation>
    <operation name="set">
    <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </operation>
    <operation name="get">
    <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </operation>
    <operation name="disconnect">
    <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </operation>
    <!--
    <messageReceivers>
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>
    -->
    <parameter name="ServiceClass">xxxx.xx.xx.xxxxxxxx.service.server.MonService</parameter>
    <module ref="rampart"/>
    <parameter name="InflowSecurity">
    <action>
    <items>UsernameToken Timestamp</items>
    <passwordCallbackClass>xxxx.xx.xx.xxxxxxxx.service.handler.PWCBHandler</passwordCallbackClass>
    </action>
    </parameter>
    </service>


    axis2.xml
    =======

    <axisconfig name="AxisJava2.0">
    <!-- ================================================= -->
    <!-- Parameters -->
    <!-- ================================================= -->
    <parameter name="hotdeployment" locked="false">true</parameter>
    <parameter name="hotupdate" locked="false">false</parameter>
    <parameter name="enableMTOM" locked="false">false</parameter>
    <parameter name="enableSwA" locked="false">false</parameter>

    <!--Uncomment if you want to enable file caching for attachments -->
    <!--parameter name="cacheAttachments" locked="false">true</parameter>
    <parameter name="attachmentDIR" locked="false"></parameter>
    <parameter name="sizeThreshold" locked="false">4000</parameter-->

    <!--This will give out the timout of the configuration contexts, in seconds-->
    <parameter name="ConfigContextTimeoutInterval" locked="false">30</parameter>

    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
    <!--that behaviour.-->
    <parameter name="sendStacktraceDetailsWithFaults" locked="false">false</parameter>

    <!--If there aren't any information available to find out the fault reason, we set the message of the expcetion-->
    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>

    <parameter name="userName" locked="false">admin</parameter>
    <parameter name="password" locked="false">axis2</parameter>

    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
    <!--<parameter name="ServicesDirectory" locked="false">service</parameter>-->
    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
    <!--<parameter name="ModulesDirectory" locked="false">modules</parameter>-->



    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
    <!--root which can configured using the following contextRoot parameter-->
    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->

    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distingiush those endpoints-->
    <!--In case of a servlet, if you change this you have to manually change the settings of your servlet container to map this -->
    <!--context path to proper Axis2 servlets-->
    <!--<parameter name="servicePath" locked="false">services</parameter>-->
    <!--<parameter name="restPath" locked="false">rest</parameter>-->


    <!--Set the flag to true if you want to enable transport level session mangment-->
    <parameter name="manageTransportSession" locked="false">false</parameter>

    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
    <!--parameters help to tweak the message handling of two main servlets. -->

    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
    <parameter name="enableRESTInAxis2MainServlet" locked="true">false</parameter>

    <!-- Following parameter will completely disable REST handling in both the servlets-->
    <parameter name="disableREST" locked="true">false</parameter>

    <!-- This will disable the separate servlet we have for REST handling. -->
    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>

    <!-- If you have a frontend host which exposes this webservice using a different public URL -->
    <!-- use this parameter to override autodetected url -->
    <!--<parameter name="httpFrontendHostUrl" locked="false">https://someotherhost/context</parameter>-->


    <!-- The way of adding listener to the system-->
    <!-- <listener class="org.apache.axis2.ObserverIMPL">-->
    <!-- <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->
    <!-- </listener>-->

    <!-- ================================================= -->
    <!-- Message Receivers -->
    <!-- ================================================= -->
    <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->
    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
    <!--any operation -->
    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->
    <messageReceivers>
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
    class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
    class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
    </messageReceivers>
    <!-- ================================================= -->
    <!-- Transport Ins -->
    <!-- ================================================= -->
    <transportReceiver name="http"
    class="org.apache.axis2.transport.http.SimpleHTTPServer">
    <parameter name="port" locked="false">8080</parameter>
    <!-- Here is the complete list of supported parameters (see example settings further below):
    port: the port to listen on (default 6060)
    hostname: if non-null, url prefix used in reply-to endpoint references (default null)
    originServer: value of http Server header in outgoing messages (default "Simple-Server/1.1")
    requestTimeout: value in millis of time that requests can wait for data (default 20000)
    requestTcpNoDelay: true to maximize performance and minimize latency (default true)
    false to minimize bandwidth consumption by combining segments
    requestCoreThreadPoolSize: number of threads available for request processing (unless queue fills up) (default 25)
    requestMaxThreadPoolSize: number of threads available for request processing if queue fills us (default 150)
    note that default queue never fills up: see HttpFactory
    threadKeepAliveTime: time to keep threads in excess of core size alive while inactive (default 180)
    note that no such threads can exist with default unbounded request queue
    threadKeepAliveTimeUnit: TimeUnit of value in threadKeepAliveTime (default SECONDS) (default SECONDS)
    -->
    <!-- <parameter name="hostname" locked="false">http://www.myApp.com/ws</parameter> -->
    <!-- <parameter name="originServer" locked="false">My-Server/1.1</parameter> -->
    <!-- <parameter name="requestTimeout" locked="false">10000</parameter> -->
    <!-- <parameter name="requestTcpNoDelay" locked="false">false</parameter> -->
    <!-- <parameter name="requestCoreThreadPoolSize" locked="false">50</parameter> -->
    <!-- <parameter name="RequestMaxThreadPoolSize" locked="false">100</parameter> -->
    <!-- <parameter name="threadKeepAliveTime" locked="false">240000</parameter> -->
    <!-- <parameter name="threadKeepAliveTimeUnit" locked="false">MILLISECONDS</parameter> -->
    </transportReceiver>

    <!--Uncomment this and configure as appropriate for JMS transport support, after setting up your JMS environment (e.g. ActiveMQ)
    <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
    <parameter name="myTopicConnectionFactory" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
    </parameter>

    <parameter name="myQueueConnectionFactory" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
    </parameter>

    <parameter name="default" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
    </parameter>
    </transportReceiver>-->

    <!--Uncomment if you want to have SMTP transport support-->
    <!--<transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">-->
    <!--<parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>-->
    <!--<parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>-->
    <!--<parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>-->
    <!--<parameter name="transport.mail.pop3.port" locked="false">110</parameter>-->
    <!--<parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>-->
    <!--</transportReceiver>-->

    <!--Uncomment if you want to have TCP transport support-->
    <!--transportReceiver name="tcp"
    class="org.apache.axis2.transport.tcp.TCPServer">
    <parameter name="port" locked="false">6060</parameter-->>
    <!--If you want to give your own host address for EPR generation-->
    <!--uncommet following paramter , and set as you required.-->
    <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
    <!-- /transportReceiver -->

    <!-- ================================================= -->
    <!-- Transport Outs -->
    <!-- ================================================= -->

    <transportSender name="tcp"
    class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
    <transportSender name="local"
    class="org.apache.axis2.transport.local.LocalTransportSender"/>
    <transportSender name="http"
    class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
    <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
    <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
    </transportSender>
    <transportSender name="https"
    class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
    <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
    <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
    </transportSender>
    <!--Uncomment this and configure as appropriate for JMS transport support, after setting up your JMS environment (e.g. ActiveMQ)
    <transportSender name="jms"
    class="org.apache.axis2.transport.jms.JMSSender"/>
    -->

    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
    <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">
    <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
    <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
    <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
    <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
    </transportSender>
    -->

    <!-- ================================================= -->
    <!-- Global Modules -->
    <!-- ================================================= -->
    <!-- Comment this to disable Addressing -->
    <module ref="addressing"/>

    <module ref="rampart" />

    <parameter name="OutflowSecurity">
    <action>
    <items>UsernameToken Timestamp</items>
    <user>bob</user>
    <passwordCallbackClass>xxxx.xx.xx.xxxxxxxx.service.handler.PWCBHandler</passwordCallbackClass>
    </action>
    </parameter>


    <module ref="soapmonitor"/>

    <!--Configuring module , providing parameters for modules whether they refer or not-->
    <!--<moduleConfig name="addressing">-->
    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->
    <!--</moduleConfig>-->

    <!-- ================================================= -->
    <!-- Phases -->
    <!-- ================================================= -->
    <phaseOrder type="InFlow">
    <!-- System pre defined phases -->
    <phase name="Transport">
    <handler name="RequestURIBasedDispatcher"
    class="org.apache.axis2.engine.RequestURIBasedDispatcher">
    <order phase="Transport"/>
    </handler>
    <handler name="SOAPActionBasedDispatcher"
    class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
    <order phase="Transport"/>
    </handler>
    </phase>
    <phase name="Security"/>
    <phase name="PreDispatch"/>
    <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
    <handler name="AddressingBasedDispatcher"
    class="org.apache.axis2.engine.AddressingBasedDispatcher">
    <order phase="Dispatch"/>
    </handler>

    <handler name="SOAPMessageBodyBasedDispatcher"
    class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
    <order phase="Dispatch"/>
    </handler>
    <handler name="InstanceDispatcher"
    class="org.apache.axis2.engine.InstanceDispatcher">
    <order phase="Dispatch"/>
    </handler>
    </phase>
    <!-- System pre defined phases -->
    <!-- After Postdispatch phase module author or or service author can add any phase he want -->
    <phase name="OperationInPhase"/>
    <phase name="soapmonitorPhase"/>
    </phaseOrder>
    <phaseOrder type="OutFlow">
    <!-- user can add his own phases to this area -->
    <phase name="soapmonitorPhase"/>
    <phase name="OperationOutPhase"/>
    <!--system predefined phase-->
    <!--these phase will run irrespective of the service-->
    <phase name="PolicyDetermination"/>
    <phase name="MessageOut"/>
    <phase name="Security"/>
    </phaseOrder>
    <phaseOrder type="InFaultFlow">
    <phase name="PreDispatch"/>
    <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
    <handler name="RequestURIBasedDispatcher"
    class="org.apache.axis2.engine.RequestURIBasedDispatcher">
    <order phase="Dispatch"/>
    </handler>

    <handler name="SOAPActionBasedDispatcher"
    class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
    <order phase="Dispatch"/>
    </handler>

    <handler name="AddressingBasedDispatcher"
    class="org.apache.axis2.engine.AddressingBasedDispatcher">
    <order phase="Dispatch"/>
    </handler>

    <handler name="SOAPMessageBodyBasedDispatcher"
    class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
    <order phase="Dispatch"/>
    </handler>
    <handler name="InstanceDispatcher"
    class="org.apache.axis2.engine.InstanceDispatcher">
    <order phase="PostDispatch"/>
    </handler>
    </phase>
    <!-- user can add his own phases to this area -->
    <phase name="OperationInFaultPhase"/>
    <phase name="soapmonitorPhase"/>
    </phaseOrder>
    <phaseOrder type="OutFaultFlow">
    <!-- user can add his own phases to this area -->
    <phase name="soapmonitorPhase"/>
    <phase name="OperationOutFaultPhase"/>
    <phase name="PolicyDetermination"/>
    <phase name="MessageOut"/>
    </phaseOrder>
    </axisconfig>

Discussions similaires

  1. Web Service + Axis2 + certificat de sécurité
    Par hatim9616 dans le forum Services Web
    Réponses: 0
    Dernier message: 12/05/2010, 17h58
  2. maveniser projet eclipse web service axis2
    Par javadevelopper dans le forum Maven
    Réponses: 0
    Dernier message: 03/12/2009, 10h54
  3. Réponses: 27
    Dernier message: 23/10/2008, 17h20
  4. Novice en web service axis2/java
    Par miai85 dans le forum Services Web
    Réponses: 2
    Dernier message: 06/08/2007, 17h32
  5. Novice en web service axis2/java
    Par miai85 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 31/07/2007, 16h12

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