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 plugin eclipse - difficultées de deployment


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Par défaut Axis2 plugin eclipse - difficultées de deployment
    Bonjour à tous,

    Je cherche a mettre en place un web service ainsi qu'un client l'utilisant . Je m'en remet au forum car, étant débutant, je n'arrive pas a m'extirper de cette situation dont voici des détails :

    - j'ai d'abord écrit mon service en java dans eclipse
    - j'ai ensuite généré tant bien que mal avec le plugin Axis2 Service Archiver
    une archive service.arr (qui contient services.xml , les bin et les librairies)
    - j'ai ensuite placé mon service dans axis2\WEB-INF\services
    - je génère ensuite le stub client grâce au plugin Axis2 Code Generator (plus grâce WSDL2Java en fait car le plug a l'air terriblement buggé ?!), en utilisant le wdsl de la page http://localhost:8080/axis2/services/MonService?wsdl
    - mon problème se trouve à l'utilisation du stub : j'accède a mon service correctement, mais toutes les fonctions disponibles n'ont pas leur signature originale et ne sont pas typées, autrement dit même une fonction de test additionnant 2 chiffres se retrouve en void add().
    - je suis donc retourné voir le wdsl de mon service, et effectivement a chaque opération je retrouve une description qui ressemble à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <wsdl:operation name="add">
     <soap:operation soapAction="" style="document"/>
     <wsdl:input>
      <soap:body use="literal"/>
     </wsdl:input>
     <wsdl:output>
      <soap:body use="literal"/>
     </wsdl:output>
    </wsdl:operation>
    sans type donc, est-ce normal ?

    mon services.xml décrivant l'opération 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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <service name="Monservice">
        <description>
           Mon service 
        </description>
         <operation name="add">
            <messageReceive class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
            <actionMapping>urn:add</actionMapping>
        </operation>
        <parameter name="Monservice">bin.MaClasse</parameter>
    </service>
    Mais on ne déclare aucun type ici ?

    Voila en j'en suis.
    Mais je ne sais pas ou remonte le problème.

    L'utilisation des plugin Axis2 pour eclipse semble tellement simple au regard de certain tuto comme http://wso2.org/library/1719
    j'ai rencontré en fait quelques bugs qui ne permettent pas de les suivre a la lettre. (Quelqu'un a t il une expérience avec ces plugin a partager ?)

    Merci d'avance de vos réponses

    Mr Ux

  2. #2
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Par défaut
    Bonjour,

    As-tu bien précisé à Eclipse la localisation de ton répertoire d'installation d'Axis2 dans Window > Preferences > Web Services > Axis2 Preferences > Axis2 Runtime ?

    As-tu bien créé un projet web de type Dynamic Web Project ?

    As-tu bien spécifié un serveur d'applications valide ?

    Une fois ton projet correctement créé, tu peux y créer un nouvelle classe implémentant ton service web. Ensuite, tu peux déployer ton service web via un clic droit sur cette classe puis New > Other... > Web Service et en spécifiant les options Start Service et Test Client, en cochant Monitor the Web service, et en changeant le Web service runtime pour Apache Axis2. Tu peux ensuite cliquer sur Finish (ou plusieurs fois sur Next pour jeter un oeil aux configurations proposées) et ton service web devrait être déployé sur ton serveur d'applications (le descripteur services.xml sera automatiquement généré).

    Sinon, à propos de ton fichier services.xml, je pense que tu dois changer la classe du messageReceiver en org.apache.axis2.rpc.receivers.RPCMessageReceiver au lieu de org.apache.axis2.receivers.RawXMLINOutMessageReceiver qui n'est à utiliser qu'en implémentant un service utilisant le modèle AXIOM d'Axis2 ce qui ne me semble pas être ton cas.

    Tu peux également créer ton archive Archive.aar manuellement en créant ton arborescence, puis en tapant dans le répertoire racine de cette arborescence la commande :
    jar -cvf Archive.aar ./*
    NB : ./* permet d'inclure tous les sous-répertoire du répertoire racine dans l'archive Archive.aar.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Par défaut
    pour te répondre :
    - oui le runtime de axis2 est bien précisé
    - mon projet est bien du type "Dynamic Web Project"

    mon archive service.aar est bien reconnu par mon ApacheTomcat 6.0 / Axis2 1.4 à http://localhost:8080/axis2/services/listServices avec la liste des operations dispo.

    voici la description wsdl du service obtenue:
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:axis2="http://ws.apache.org/axis2" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://ws.apache.org/axis2">
        <wsdl:documentation>GAPservice</wsdl:documentation>
        <wsdl:types/>
        <wsdl:message name="addRequest"/>
        <wsdl:message name="addResponse"/>
        <wsdl:message name="alignSequencesRequest"/>
        <wsdl:message name="alignSequencesResponse"/>
        <wsdl:portType name="GAPservicePortType">
            <wsdl:operation name="add">
                <wsdl:input message="axis2:addRequest" wsaw:Action="urn:add"/>
                <wsdl:output message="axis2:addResponse" wsaw:Action="urn:addResponse"/>
            </wsdl:operation>
            <wsdl:operation name="alignSequences">
                <wsdl:input message="axis2:alignSequencesRequest" wsaw:Action="urn:alignSequences"/>
                <wsdl:output message="axis2:alignSequencesResponse" wsaw:Action="urn:alignSequencesResponse"/>
            </wsdl:operation>
        </wsdl:portType>
        <wsdl:binding name="GAPserviceSoap11Binding" type="axis2:GAPservicePortType">
            <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
            <wsdl:operation name="add">
                <soap:operation soapAction="" style="document"/>
                <wsdl:input>
                    <soap:body use="literal"/>
                </wsdl:input>
                <wsdl:output>
                    <soap:body use="literal"/>
                </wsdl:output>
            </wsdl:operation>
            <wsdl:operation name="alignSequences">
                <soap:operation soapAction="" style="document"/>
                <wsdl:input>
                    <soap:body use="literal"/>
                </wsdl:input>
                <wsdl:output>
                    <soap:body use="literal"/>
                </wsdl:output>
            </wsdl:operation>
        </wsdl:binding>
        <wsdl:binding name="GAPserviceSoap12Binding" type="axis2:GAPservicePortType">
            <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
            <wsdl:operation name="add">
                <soap12:operation soapAction="" style="document"/>
                <wsdl:input>
                    <soap12:body use="literal"/>
                </wsdl:input>
                <wsdl:output>
                    <soap12:body use="literal"/>
                </wsdl:output>
            </wsdl:operation>
            <wsdl:operation name="alignSequences">
                <soap12:operation soapAction="" style="document"/>
                <wsdl:input>
                    <soap12:body use="literal"/>
                </wsdl:input>
                <wsdl:output>
                    <soap12:body use="literal"/>
                </wsdl:output>
            </wsdl:operation>
        </wsdl:binding>
        <wsdl:binding name="GAPserviceHttpBinding" type="axis2:GAPservicePortType">
            <http:binding verb="POST"/>
            <wsdl:operation name="add">
                <http:operation location="GAPservice/add"/>
                <wsdl:input>
                    <mime:content type="text/xml" part="add"/>
                </wsdl:input>
                <wsdl:output>
                    <mime:content type="text/xml" part="add"/>
                </wsdl:output>
            </wsdl:operation>
            <wsdl:operation name="alignSequences">
                <http:operation location="GAPservice/alignSequences"/>
                <wsdl:input>
                    <mime:content type="text/xml" part="alignSequences"/>
                </wsdl:input>
                <wsdl:output>
                    <mime:content type="text/xml" part="alignSequences"/>
                </wsdl:output>
            </wsdl:operation>
        </wsdl:binding>
        <wsdl:service name="GAPservice">
            <wsdl:port name="GAPserviceHttpSoap11Endpoint" binding="axis2:GAPserviceSoap11Binding">
                <soap:address location="http://192.168.199.49:8080/axis2/services/GAPservice.GAPserviceHttpSoap11Endpoint"/>
            </wsdl:port>
            <wsdl:port name="GAPserviceHttpSoap12Endpoint" binding="axis2:GAPserviceSoap12Binding">
                <soap12:address location="http://192.168.199.49:8080/axis2/services/GAPservice.GAPserviceHttpSoap12Endpoint"/>
            </wsdl:port>
            <wsdl:port name="GAPserviceHttpEndpoint" binding="axis2:GAPserviceHttpBinding">
                <http:address location="http://192.168.199.49:8080/axis2/services/GAPservice.GAPserviceHttpEndpoint"/>
            </wsdl:port>
        </wsdl:service>
    </wsdl:definitions>
    à ce stade, pourriez vous deja me dire si la description des opérations semble juste ? (je ne vois pas de types)

    voici une ébauche de client utilisant le stub, peut être est ce mon utilisation qui est mauvaise...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class clientGAP {
    	public static void main(String[] args) {
    		try{
    			GAPserviceLocator locator = new GAPserviceLocator();
    			GAPservicePortType service = locator.getGAPserviceHttpSoap12Endpoint();
    			System.out.println( service.add() );
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    	}
    la j'obtiens une erreur de type : The SERVICE_OBJECT_SUPPLIER parameter is not specified. Mais je ne peux mettre de parametre à l'appelle de add() car son type est void...

    Si jamais vous pouvez m'aider... Merci !

  4. #4
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Par défaut
    Citation Envoyé par Mr.ux Voir le message
    voici la description wsdl du service obtenue:
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:axis2="http://ws.apache.org/axis2" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://ws.apache.org/axis2">
        <wsdl:documentation>GAPservice</wsdl:documentation>
        <wsdl:types/>
        <wsdl:message name="addRequest"/>
        <wsdl:message name="addResponse"/>
        <wsdl:message name="alignSequencesRequest"/>
        <wsdl:message name="alignSequencesResponse"/>
        <wsdl:portType name="GAPservicePortType">
            <wsdl:operation name="add">
                <wsdl:input message="axis2:addRequest" wsaw:Action="urn:add"/>
                <wsdl:output message="axis2:addResponse" wsaw:Action="urn:addResponse"/>
            </wsdl:operation>
            <wsdl:operation name="alignSequences">
                <wsdl:input message="axis2:alignSequencesRequest" wsaw:Action="urn:alignSequences"/>
                <wsdl:output message="axis2:alignSequencesResponse" wsaw:Action="urn:alignSequencesResponse"/>
            </wsdl:operation>
        </wsdl:portType>
        <wsdl:binding name="GAPserviceSoap11Binding" type="axis2:GAPservicePortType">
            <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
            <wsdl:operation name="add">
                <soap:operation soapAction="" style="document"/>
                <wsdl:input>
                    <soap:body use="literal"/>
                </wsdl:input>
                <wsdl:output>
                    <soap:body use="literal"/>
                </wsdl:output>
            </wsdl:operation>
            <wsdl:operation name="alignSequences">
                <soap:operation soapAction="" style="document"/>
                <wsdl:input>
                    <soap:body use="literal"/>
                </wsdl:input>
                <wsdl:output>
                    <soap:body use="literal"/>
                </wsdl:output>
            </wsdl:operation>
        </wsdl:binding>
        <wsdl:binding name="GAPserviceSoap12Binding" type="axis2:GAPservicePortType">
            <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
            <wsdl:operation name="add">
                <soap12:operation soapAction="" style="document"/>
                <wsdl:input>
                    <soap12:body use="literal"/>
                </wsdl:input>
                <wsdl:output>
                    <soap12:body use="literal"/>
                </wsdl:output>
            </wsdl:operation>
            <wsdl:operation name="alignSequences">
                <soap12:operation soapAction="" style="document"/>
                <wsdl:input>
                    <soap12:body use="literal"/>
                </wsdl:input>
                <wsdl:output>
                    <soap12:body use="literal"/>
                </wsdl:output>
            </wsdl:operation>
        </wsdl:binding>
        <wsdl:binding name="GAPserviceHttpBinding" type="axis2:GAPservicePortType">
            <http:binding verb="POST"/>
            <wsdl:operation name="add">
                <http:operation location="GAPservice/add"/>
                <wsdl:input>
                    <mime:content type="text/xml" part="add"/>
                </wsdl:input>
                <wsdl:output>
                    <mime:content type="text/xml" part="add"/>
                </wsdl:output>
            </wsdl:operation>
            <wsdl:operation name="alignSequences">
                <http:operation location="GAPservice/alignSequences"/>
                <wsdl:input>
                    <mime:content type="text/xml" part="alignSequences"/>
                </wsdl:input>
                <wsdl:output>
                    <mime:content type="text/xml" part="alignSequences"/>
                </wsdl:output>
            </wsdl:operation>
        </wsdl:binding>
        <wsdl:service name="GAPservice">
            <wsdl:port name="GAPserviceHttpSoap11Endpoint" binding="axis2:GAPserviceSoap11Binding">
                <soap:address location="http://192.168.199.49:8080/axis2/services/GAPservice.GAPserviceHttpSoap11Endpoint"/>
            </wsdl:port>
            <wsdl:port name="GAPserviceHttpSoap12Endpoint" binding="axis2:GAPserviceSoap12Binding">
                <soap12:address location="http://192.168.199.49:8080/axis2/services/GAPservice.GAPserviceHttpSoap12Endpoint"/>
            </wsdl:port>
            <wsdl:port name="GAPserviceHttpEndpoint" binding="axis2:GAPserviceHttpBinding">
                <http:address location="http://192.168.199.49:8080/axis2/services/GAPservice.GAPserviceHttpEndpoint"/>
            </wsdl:port>
        </wsdl:service>
    </wsdl:definitions>
    à ce stade, pourriez vous deja me dire si la description des opérations semble juste ? (je ne vois pas de types)
    Il manque effectivement la définition des types...

    Je ne comprends pas comment Eclipse a pu faire sauter les types en générant le service web à partir de son implémentation...

    As-tu réessayé de récréer une archive .aar toi-même avec le fichier .class de ton service compilé et le fichier services.xml avec le messageReceiver que je t'ai indiqué, puis de déployer cette archive .aar ?

    Sinon, pourrais-tu poster le code de ton service, histoire que j'essaie également de le déployer avec Eclipse ?

    Enfin, tu peux aussi essayer d'utiliser Axis et non Axis2 avec Eclipse pour générer ton service web, mais peut-être tiens-tu à utiliser forcément Axis2...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Par défaut
    D'abord merci de t'intéresser a mon pb.

    Citation Envoyé par Arnaud_03 Voir le message
    Je ne comprends pas comment Eclipse a pu faire sauter les types en générant le service web à partir de son implémentation...
    Le WSDL n'est il pas plutot généré par Axis2 ? eclipse n'en génère pas dans le .aar

    sinon l'archive créée a la main ne change rien.

    je peux poser mon code ici, mais en fait j'ai le mm pb avec une simple classe qui additionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Math {
    	public int addNUmber(int a,int b){
    		return a+b;
    	}
    }
    Sinon je n'ai rien contre utiliser Axis au lieu de Axis2 (j'avais mm commencé dans ce sens au debut, jusqu'a ce que je lise qq article ventant le 2...).
    Par contre je en voit pas comment utiliser le .aar dans Axis. Il parait que l'on peut uploader l'archive depuis la page admin, mais ma page d'admin (une fois activée) est une simple page blanche avec ecrit "Server is running Current load = 1 " ...

    je desepere un peu...

  6. #6
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Par défaut
    Citation Envoyé par Mr.ux Voir le message
    Le WSDL n'est il pas plutot généré par Axis2 ? eclipse n'en génère pas dans le .aar
    Oui, Eclipse fait appel à Axis2 pour générer le document WSDL.

    Citation Envoyé par Mr.ux Voir le message
    j'ai le mm pb avec une simple classe qui additionne
    Essaie voir le service
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package axis2pojo;
     
    public class Axis2POJO {
    	public String sayHello(String name) {
    		return "Hello " + name + " !";
    	}
    }
    avec le fichier services.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <service name="Axis2POJO">
    	<description>Axis2 POJO Service</description>
    	<parameter name="ServiceClass">axis2pojo.Axis2POJO</parameter>
    	<operation name="sayHello">
    		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    	</operation>
    </service>
    en plaçant bien le fichier compilé Axis2POJO.class dans un répertoire axis2pojo et le fichier services.xml dans un répertoire META-INF, puis en créant une archive aar avec les répertoires axis2pojo et META-INF.

    Citation Envoyé par Mr.ux Voir le message
    Par contre je en voit pas comment utiliser le .aar dans Axis.
    Axis n'utilise pas d'archive aar pour déployer un service web. Selon la méthode utilisée avec Axis, il faut écrire un fichier jws ou bien compiler un fichier source et utiliser l'utilitaire AdminClient avec un descripteur de déploiement au format wsdd.

    Citation Envoyé par Mr.ux Voir le message
    je desepere un peu...
    Mais non, il ne faut pas...

Discussions similaires

  1. problème avec plugins axis2 pour eclipse
    Par texel dans le forum Services Web
    Réponses: 1
    Dernier message: 11/07/2011, 11h12
  2. [Plugin]Plugins Eclipse Oracle
    Par Canou dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 30/11/2005, 23h07
  3. [langage] EPIC Plugin eclipse pour perl
    Par JefDeBourges dans le forum Langage
    Réponses: 2
    Dernier message: 21/12/2004, 18h06
  4. [Webservice] Plugin Eclipse
    Par lihe dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 23/09/2004, 10h43
  5. Plugin Eclipse pour validation de donnees XML (shema)
    Par Raphael94 dans le forum Valider
    Réponses: 2
    Dernier message: 10/06/2004, 16h33

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