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 :

[Axis][Débutant] Message d'erreur dans la demande de réponse.


Sujet :

Services Web Java

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut [Axis][Débutant] Message d'erreur dans la demande de réponse.
    Bonjour, voilà je suis pas un pro du Java et un gros débutant dans Axis SOAP et cie...
    Voilà, j'ai installé un gros logiciel de gestion de licence pour ma boîte (FLEXnet Operations Module 8.2 par Macrovision), c'est une application webbased en java avec une BD oracle.
    En bref cette application a pour but de générer des fichiers de licences pour la protection des logiciels de ma boîte, pour celà cette application gère des produits (les soft de ma boites), des entitlements (les commandes de softs des clients) et bien-sûr les fichiers de licences (activation/génération).
    On peut utiliser l'appli directement via l'UI, ou lui fournir les informations qu'elle veut (issu d'un quelconque ERP) par le principe des Services Web.
    Pour celà, elle fournit quasiment tous les outils et utilise Axis. Il ne me reste plus qu'a créer les .java lui donnant les infos, en plus de celà, l'appli est fournie avec tout un tas de programmes exemples.
    Je suis donc parti la-dessus, avec le plus simple la création d'une feature (brique de base d'un soft dans l'appli).
    Dans le principe, de ce que j'en ai compris, le .java créé un .xml, le service web le lit, l'intègre à la BD et envoi une réponse en xml, et là j'ai une erreure sur la réponse.

    voici le java :
    _________________________________________________________________
    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
    import com.macrovision.flexnet.operations.webservices.ClientSecurityCredentials;
    import com.macrovision.flexnet.operations.webservices.CreateFeatureRequestType;
    import com.macrovision.flexnet.operations.webservices.CreateFeatureResponseType;
    import com.macrovision.flexnet.operations.webservices.CreatedFeatureDataListType;
    import com.macrovision.flexnet.operations.webservices.CreatedFeatureDataType;
    import com.macrovision.flexnet.operations.webservices.FailedFeatureDataListType;
    import com.macrovision.flexnet.operations.webservices.FailedFeatureDataType;
    import com.macrovision.flexnet.operations.webservices.FeatureDataType;
    import com.macrovision.flexnet.operations.webservices.ProductPackagingServiceInterface;
    import com.macrovision.flexnet.operations.webservices.ProductPackagingServiceLocator;
    import com.macrovision.flexnet.operations.webservices.StatusType;
    import com.macrovision.flexnet.operations.webservices.VersionFormatType;
    
    public class CreateFeatureTest {
    
    	public static void main(String[] args) {
    
            // Service end point where webservice is running
    		String serviceEndPoint = "http://localhost:8888/flexnet/services/ProductPackagingService";
    
    		ProductPackagingServiceInterface service = null;
    
    		// Instantiate locator
    		ProductPackagingServiceLocator locator = new ProductPackagingServiceLocator();
    
    		try {
    
    			// Get the handle to EntitlementService
    			service = locator.getProductPackagingService(new java.net.URL(serviceEndPoint));
    
            	CreateFeatureRequestType request = new CreateFeatureRequestType();
            	FeatureDataType fType = new FeatureDataType();
            	fType.setFeatureName("FeatTestInterface1");
            	fType.setVersion("1.0");
            	fType.setDescription("Feature de Test pour Interfaces via WebService");	        	
            	fType.setVersionFormat(VersionFormatType.FIXED);
            	
    
            	FeatureDataType fType1 = new FeatureDataType();
            	fType1.setFeatureName("FeatTestInterface2");
            	fType1.setVersion("2.0");
            	fType1.setDescription("Feature de Test pour Interfaces via WebService");	        	
            	fType1.setVersionFormat(VersionFormatType.FIXED);
            	
            	FeatureDataType[] fArray = new FeatureDataType[2];
            	fArray[0] = fType;
            	fArray[1] = fType1;
            	request.setFeature(fArray); 
            	
                ClientSecurityCredentials credentials = new ClientSecurityCredentials(service);
                credentials.setUsername("admin");
                credentials.setPassword("admin");
                //System.out.println("test");
                CreateFeatureResponseType response = service.createFeature(request);
                System.out.println("erreur->" + response.getStatusInfo().getStatus().toString());
      		    // Check the status in the response
    			if (response.getStatusInfo().getStatus().toString().equals(StatusType.SUCCESS.toString()))
    			{
    			   System.out.println("Features Created successfully ");
    			   CreatedFeatureDataListType fListType = response.getResponseData();
    		       CreatedFeatureDataType[] features = fListType.getCreatedFeature();
    		       for(int x=0; x< features.length ; x++)
    		       {
    				   String referenceRecord = features[x].getRecordRefNo();
    				   String uniqueId = features[x].getUniqueId();
    				   System.out.println("Record Reference ->" + referenceRecord + "   UniqueId of Created Feature ->" + uniqueId);
    
    			   }
    			}else
    			{
    				System.out.println("Update line item failed");
    				System.out.println("Reason for Failure -> " + response.getStatusInfo().getReason());
    				FailedFeatureDataListType failedData = response.getFailedData();
    				FailedFeatureDataType[] failedArray = failedData.getFailedFeature();
    				for (int ii = 0; failedArray != null && ii < failedArray.length; ii++)
    					System.out.println("Create Feature failed due to reason :" + failedArray[ii].getReason());
    			}
    
    		}
    		catch(Exception e) {
    				e.printStackTrace();
    		}
    
    	}
    
    }
    _________________________________________________________________

    et l'erreur que me renvoi Axis dans la console:
    _________________________________________________________________
    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
     
    AxisFault
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
     faultSubcode: 
     faultString: java.lang.NullPointerException
     faultActor: 
     faultNode: 
     faultDetail: 
    	{http://xml.apache.org/axis/}stackTrace: java.lang.NullPointerException
    	at java.util.Hashtable.put(Unknown Source)
    	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.setProperty(Unknown Source)
    	at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:246)
    	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538)
    	at org.apache.axis.Message.getSOAPEnvelope(Message.java:376)
    	at org.apache.axis.client.Call.invokeEngine(Call.java:2583)
    	at org.apache.axis.client.Call.invoke(Call.java:2553)
    	at org.apache.axis.client.Call.invoke(Call.java:2248)
    	at org.apache.axis.client.Call.invoke(Call.java:2171)
    	at org.apache.axis.client.Call.invoke(Call.java:1691)
    	at com.macrovision.flexnet.operations.webservices.ProductPackagingServiceBindingStub.createFeature(ProductPackagingServiceBindingStub.java:2296)
    	at CreateFeatureTest.main(CreateFeatureTest.java:54)
     
     
    java.lang.NullPointerException
    	at org.apache.axis.AxisFault.makeFault(AxisFault.java:129)
    	at org.apache.axis.client.Call.invoke(Call.java:2251)
    	at org.apache.axis.client.Call.invoke(Call.java:2171)
    	at org.apache.axis.client.Call.invoke(Call.java:1691)
    	at com.macrovision.flexnet.operations.webservices.ProductPackagingServiceBindingStub.createFeature(ProductPackagingServiceBindingStub.java:2296)
    	at CreateFeatureTest.main(CreateFeatureTest.java:54)
    Caused by: java.lang.NullPointerException
    	at java.util.Hashtable.put(Unknown Source)
    	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.setProperty(Unknown Source)
    	at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:246)
    	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538)
    	at org.apache.axis.Message.getSOAPEnvelope(Message.java:376)
    	at org.apache.axis.client.Call.invokeEngine(Call.java:2583)
    	at org.apache.axis.client.Call.invoke(Call.java:2553)
    	at org.apache.axis.client.Call.invoke(Call.java:2248)
    	... 4 more
    _________________________________________________________________

    En rouge gras la ligne qui créé l'erreur, en effet, le programme s'arrête à cet endroit là et me donne ce joli message incompréhensible pour mes pauvres connaissances....

    Le programme marche presque puisque les features sont bien créées dans l'appli, le bug vient juste quand le java demande la réponse du service web!
    celà parle-t-il a quelqu'un?

  2. #2
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Help please!!!
    bouhouhouhouhouohuouhouhouhouohuouhouhouhouhouhouhouh

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Bonjour,
    Eh bien, si l'erreur "java.lang.NullPointerException" vient de la ligne que tu as signalée: CreateFeatureResponseType response = service.createFeature(request);, cela veut tout simplement dire que la variable "service" n'a pas pu être initialisée au niveau de la ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Get the handle to EntitlementService
    	  service = locator.getProductPackagingService(new java.net.URL(serviceEndPoint));
    Tu devrais vérifier si le web service est bien déployé à l'adresse indiquée ( String serviceEndPoint = "http://localhost:8888/flexnet/services/ProductPackagingService"; )
    Est-ce que tu obtiens le WSDL à partir de ton navigateur en essayant d'afficher l'adresse suivante : "http://localhost:8888/flexnet/services/ProductPackagingService?WSDL"
    Aussi, le web service est bien sur la même machine (localhost) que celle sur laquelle tu testes ton code ?
    SCJP 5 / SCBCD 1.3 Certified

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Non j'ai bien vérifié, le web service est bien là où c'est indiqué, j'ai même changé pour mettre le nom complet du poste plutôt que localhost!
    et même, si jamais ca avait été que le programme ne "trouvait" pas le service web, les features ne seraient pas créées dans l'appli!
    Alors que là elles sont créées, donc le service web fonctionne, en tout cas le request.

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    J'ai essayé en initialisant aussi response qui ne l'était pas, mais ce ne change rien!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CreateFeatureResponseType response = new CreateFeatureResponseType();
    response = service.createFeature(request);

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par angearael
    Non j'ai bien vérifié, le web service est bien là où c'est indiqué, j'ai même changé pour mettre le nom complet du poste plutôt que localhost!
    et même, si jamais ca avait été que le programme ne "trouvait" pas le service web, les features ne seraient pas créées dans l'appli!
    Alors que là elles sont créées, donc le service web fonctionne, en tout cas le request.
    Sauf que, d'après ce que je lis moi de ton code, les features et le request ne sont pas créés à partir du web service mais juste en instanciant des classes que tu as importées, donc ça nous renseigne pas sur le bon fonctionnement du web service. Je ne connais pas cette API que tu utilises ni comment se exactement l'appel au web service dans la classe "ProductPackagingServiceLocator", mais si vraiment la ligne incriminée c'est celle que tu as mise en rouge, le NullPointerException là normalement doit porter sur la variable "service". Essaie de faire un test "if (service == null) ..." pour voir si réellement tu obtiens une référence valide de "service".
    SCJP 5 / SCBCD 1.3 Certified

  7. #7
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    J'ai testé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (service==null)
    {
          System.out.println("Service null");
    }
    else
    {
          System.out.println("Service pas null");
          response = service.createFeature(request);
    }
    et j'ai bien Service pas null dans la console, suivi de toujours ce putain de message d'erreur!

  8. #8
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Ah tu testais l'appel à la webservice en dehors de ton code ? le message d'eereur semble correspondre à un pb d'appel à la webservice.

    ta webservice est sur le meme serveur que ton appli ? tu n'as pas un firewall ??

  9. #9
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Alors en fait tout est pour le moment sur mon poste.
    L'application, la base de données, les webservices, mon programme java de test.
    J'accède à l'appli par http://localhost:8888/flexnet
    Les web services sont http://localhost:8888/flexnet/services/nomduservice
    Mon poste est bien évidemment sur le rézo de ma boîte qui est bien évidemment protégé par firewall et proxy, mais étant donné que tout est sur mon poste, je ne pense pas que celà pose problème.

    Et encore une fois, pourquoi est-ce que l'envoi de la demande fonctionne (mes features sont enregistrés dans l'appli) et pourquoi la demande de réponse bug, dans les deux cas, celà concerne toujours le même service web!!!
    'Fin bon jdis ça, j'y connais rien lol, c'est peut-être complètement indépendant!!!
    Quand au dernier test que j'ai mis (if (service==null)... je l'ai mis dans le même code java (celui dans le premier post).

  10. #10
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Salut,

    l'erreur

    java.lang.NullPointerException
    at java.util.Hashtable.put(Unknown Source)

    peut se déclencher suite à une valeur attendue qui est à null.

    as tu vérifier que tu passais bien tout les paramètres à ta webservice pour créer ton entrée ?

  11. #11
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Je ne pense pas, surtout que je le rappelle ce code, est un exemple fournit par l'application utilisant les services web, donc il est sensé être correct...

  12. #12
    Membre averti Avatar de supernova
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 447
    Points : 415
    Points
    415
    Par défaut
    Salut,

    Tu peux invoquer ton web service avec ton navigateur sur une méthode simple :


    http://serveur:port/axis/services/mo...to&param2=titi

    c'est un début pour voir si le fonctionnement de ton ws est ok
    Il est difficile d’attraper un chat noir dans une pièce sombre. Surtout lorsqu'il n’y est pas.

  13. #13
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Quand je tape l'adresse de mon webservice :

    http://host:port/flexnet/services/Pr...ckagingService

    s'affiche le message suivant :

    ProductPackagingService

    Hi there, this is an AXIS service!
    Perhaps there will be a form for invoking the service here...

    Ce qui prouve que le service est accessible non?

    et encore une fois je le rappel, le webservice fait bien ce que je lui demande, ajouter des élèments dans l'appli et sa base, mais il n'arrive pas à me répondre qu'il l'a bien fait.

    Celà pourrait-il venir d'un proxy sur mon réseau local (même si je ne travail que sur mon poste)?

  14. #14
    Membre averti Avatar de supernova
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 447
    Points : 415
    Points
    415
    Par défaut
    tu arrives a récuperer le wsdl par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://host:port/flexnet/services/Pr...ckagingService?wsdl
    Il est difficile d’attraper un chat noir dans une pièce sombre. Surtout lorsqu'il n’y est pas.

  15. #15
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    voui!
    (fin si tu parle de l'enorme pavé xml )

    je rappel aussi que ce n'est pas moi qui ai développé c'est ws ni les fonctions qu'il y a dans le programme java.

  16. #16
    Membre averti Avatar de supernova
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 447
    Points : 415
    Points
    415
    Par défaut
    Le principe d'appel consiste a créer en local un proxy d'appel de ton web service à partir de ton fichier wsdl ? quel IDE utilise tu ?

    si c'est Eclipse tu récupères la totalité de ton fichier wsdl distant et tu créer un fichier portant l'extension wsdl dans ton projet.

    Ensuite tu créer une tache Ant pour générer les classes Axis/Locator :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <target name="Java depuis wsdl" description="Generation des classes Java Axis depuis un fichier WSDL">
    		<!-- Generation des classes Java Axis (partie Serveur) depuis un fichier WSDL -->
    		<axis-wsdl2java output="${generated.dir}" verbose="true" url="${flex.wsdl}">
    			<mapping namespace="http://axis.apache.org/ns/interop" package="interop"/>
    		</axis-wsdl2java>
    	</target>
    Il est difficile d’attraper un chat noir dans une pièce sombre. Surtout lorsqu'il n’y est pas.

  17. #17
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Et quel sera le résultat?

    Je rappel que tout celà est déjà programmé et est sensé marcher tout seul le plus normalement du monde, je ne suis pas sensé touche à autre chose que les programmes java permettant d'appeler les ws en utilisant les fonctions que l'application m'a fournie!

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/08/2006, 10h19
  2. message d'erreur dans sous formulaire
    Par tojiji dans le forum Access
    Réponses: 6
    Dernier message: 28/07/2006, 12h09
  3. [Débutant] Message d'erreur que je ne comprends pas
    Par Le Furet dans le forum Langage
    Réponses: 2
    Dernier message: 25/02/2006, 17h37
  4. Message d'erreur dans phpMyadmin
    Par riadh100 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 26/09/2005, 14h03
  5. [Tiles]message d'erreur dans un footer (form mal rempli)
    Par clement42 dans le forum Struts 1
    Réponses: 5
    Dernier message: 09/06/2005, 14h51

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