2016-11-21 1 views
2

J'ai déjà un serveur C++ contenant un service qui insère un utilisateur dans la base de données, le travail du service est super quand je le teste sur la console.Axis Client gsoap Server

Mais le fait est que je développe une application cliente Java qui consomme le service avec Apache Axis, malheureusement cela ne fonctionne pas. J'ai cherché des informations qui pourraient m'aider avec ce problème mais je ne vois aucune implémentation similaire.

Mon Apache fichiers Axis sont dans/usr/share/java, qui est la valeur de ma variable AXIS2_HOME, ce, afin d'exécuter:

java -cp $AXIS2_HOME org.apache.axis.wsdl.WSDL2Java -p CrearAlumno http://localhost/CrearAlumno.wsdl 

pour générer les fichiers, plus tard, j'Execute:

javac -cp $AXIS2_HOME *.java 

pour compiler mes fichiers, y compris la classe client

//CrearAlumnoClient.java 

package CrearAlumno; 
import java.rmi.RemoteException; 
import javax.xml.rpc.ServiceException; 

public class CrearAlumnoClient{ 

    public static void main(String[] args) 
    { 

    Input in = new Input("asdf", "adgfsdf", "asdg", 453, "asdf", "asdfasdf", "pasdfsd", "asdfsd"); 

    try{ 
    CrearAlumno_Service service = new CrearAlumno_ServiceLocator(); 
    CrearAlumnoPortType port = service.getCrearAlumno(); 
    String response = port.getInfo(in); 
    }catch(RemoteException e){ 
     e.printStackTrace(); 
    }catch(ServiceException e){ 
    e.printStackTrace(); 
    } 

    } 
} 

mais quand j'Excecute:

java CrearAlumno.CrearAlumnoClient 

Mon application renvoie cette erreur:

Error: A JNI error has occurred, please check your installation and try again 
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/rpc/ServiceException 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048) 
    at java.lang.Class.getMethod0(Class.java:3018) 
    at java.lang.Class.getMethod(Class.java:1784) 
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 
Caused by: java.lang.ClassNotFoundException: javax.xml.rpc.ServiceException 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 7 more 

Je ne sais pas comment résoudre cette erreur, je cherche une mise en œuvre, mais à ce moment-là, je ne l'ai pas.

Je serai également heureux si quelqu'un peut me montrer une implémentation simple d'Axis et gsoap.

Merci de votre attention :).

Répondre

0

Cela ressemble à un cas simple où votre chemin de classe n'est pas configuré correctement.

Il y a des informations sur ce sujet spécifique ici: http://axis.apache.org/axis/java/install.html#Classpath_setup

Vous devez vous assurer que le fichier jar contenant javax.xml.rpc.ServiceException est présent.

Je vois que vous configurez votre chemin de classe en utilisant -cp $AXIS2_HOME qui ne fonctionnera pas. Au mieux si vos pots sont en $AXIS2_HOME alors vous devez faire $AXIS2_HOME/*.jar mais tout liklihood vous aurez besoin d'avoir quelque chose comme:

set AXIS_HOME=/usr/axis 
set AXIS_LIB=$AXIS_HOME/lib 
set AXISCLASSPATH=$AXIS_LIB/axis.jar:$AXIS_LIB/commons-discovery.jar: 
$AXIS_LIB/commons-logging.jar:$AXIS_LIB/jaxrpc.jar:$AXIS_LIB/saaj.jar: 
$AXIS_LIB/log4j-1.2.8.jar:$AXIS_LIB/xml-apis.jar:$AXIS_LIB/xercesImpl.jar: 
$AXIS_LIB/wsdl4j.jar 
export AXIS_HOME; export AXIS_LIB; export AXISCLASSPATH 

Puis, lancez votre application avec:

java -cp $AXISCLASSPATH 

Avec En ce qui concerne l'intégration entre Axis et Gsoap, cela devrait être très simple. Il ne devrait pas vraiment y avoir d'interventions spéciales nécessaires parce que vous êtes en train de croiser entre Java et C World - au moins pour des cas d'utilisation simple.