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/Un service sur une interface (plusieurs implémentations possibles)


Sujet :

Services Web Java

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut AXIS2/Un service sur une interface (plusieurs implémentations possibles)
    Bonjour,

    J'utilise Axis2 et j'aimerais créer un webservice qui se base sur une interface avec une implémentation fixe que j'aimerais setter dans le services.xml


    Mes classes sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface IExample extends Remote
    {
       Integer add (Integer first, Integer second) throws RemoteException;
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class IExampleImpl implements IExample
    {
       public IExampleImpl () throws RemoteException
       {
          super ();
       }
     
       public Integer add (Integer first, Integer second) throws RemoteException
       {
          return first+second;
       }
    }
    Mais quand je crée mon service et le déploie dans Tomcat, quand je teste avec soapUI, j'ai toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <faultstring>java.lang.NullPointerException</faultstring>
    Mon fichier services.xml est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <service name="IExample"  >
        <description>
            Service for the IExemple
        </description>
        <messageReceivers>
    		<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    		<messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    	</messageReceivers>
        <operation name="add">
            <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
            <actionMapping>urn:add</actionMapping>
        </operation>
        <parameter name="ServiceClass" locked="false">IExampleImpl</parameter>
     </service>
    En gros : est-ce possible de faire un webservice basé sur une interface ?

    Merci beaucoup

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Points : 459
    Points
    459
    Par défaut
    Quand j'utilise un RawXMLINOutMessageReceiver, mes methodes sont plutot de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public OMElement add(OMElement request) {
      // ...
    }

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Je ne suis pas sur du tout du services.xml...
    Je veux juste laisser au serveur le choix de l'implémentation dès le lancement.

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Points : 459
    Points
    459
    Par défaut
    As tu généré les classes de service avec l'outil WSDL2Java fourni avec Axis2 ?

    Car, quand tu utilises RawXml(blabla...) receiver, tu n'as accès qu'au XML brut comme le suggère le nom. Tu dois alors parcourir le xml "à la main", en utilisant les OMElement.

    Utilise plutôt l'outil de génération, celui ci va te créer une interface sur laquelle tu pourras mettre l'implémentation que tu veux.

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    J'ai réussi à faire ce que je voulais en utilisant Metro (JAX-WS) et la déclaration suivante :

    @WebService(endpointInterface="IExample", portName="IExamplePort",serviceName="IExampleService" )
    dans ma classe d'implémentation IExampleImpl


    Merci beaucoup.

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

Discussions similaires

  1. gérer plusieurs graphiques sur une interface
    Par olivyeye dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 17/11/2008, 16h03
  2. Requete permettant de renvoyer sur une ligne plusieur valeurs
    Par shaun_the_sheep dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/02/2007, 15h09
  3. Réponses: 2
    Dernier message: 26/01/2006, 14h11
  4. Réponses: 3
    Dernier message: 27/11/2005, 17h59
  5. [débutant] 1 ordre select sur une OU plusieurs tables
    Par goony dans le forum Langage SQL
    Réponses: 10
    Dernier message: 18/08/2005, 10h57

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