2016-11-21 14 views
2

私はすでにDBにユーザーを挿入するサービスを含むC++サーバーを持っています。コンソールでテストするとサービス作業が大変です。Axis Client gsoap Server

しかし実際、私はApache Axisでサービスを使用するJavaクライアントアプリケーションを開発していますが、残念ながら動作しません。私はこの問題で私を助けることができる情報を探してきましたが、同様の実装はありません。

私のApache Axisファイルは、この、実行するために、私のAXIS2_HOME変数の値では、/ usr/share/javaの、である:

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

ファイルを生成するために、後で私が実行します。

javac -cp $AXIS2_HOME *.java 

は、クライアントクラスを含め、私のファイルをコンパイルする

//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(); 
    } 

    } 
} 

が、私はexcecute:

java CrearAlumno.CrearAlumnoClient 

私のアプリケーションは、このエラーがスローされます。

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 

私はどのようにこのエラーを解決するには考えている、私は実装を探してきたが、この時点で、私はそれを持っていけません。

Axisとgsoapの単純な実装を誰かに教えていただければ幸いです。

ありがとうございました:)

答えて

0

これは、クラスパスが正しく設定されていないという単純なケースのようです。

その特定のトピックに関する情報がここにあります:http://axis.apache.org/axis/java/install.html#Classpath_setup

あなたはjavax.xml.rpc.ServiceExceptionを含むjarファイルが存在していることを確認する必要があります。

-cp $AXIS2_HOMEを使用してクラスパスを設定していますが、これは動作しません。あなたのjarが$AXIS2_HOMEである場合、せいぜい、あなたは$AXIS2_HOME/*.jarを行う必要がありますが、それはあなたがより多くのようなもの持っている必要がありますすべてのliklihood:

java -cp $AXISCLASSPATH 

:次に

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 

を使用してアプリケーションを起動しますAxisとGsoapの統合に関しては、それは本当に簡単なことです。少なくとも単純なユースケースでは、JavaとCの世界を超えているため、特別な介入は必要ありません。