2016-11-21 5 views
2

У меня уже есть сервер C++, содержащий службу, которая вставляет пользователя в БД, отлично работает сервис, когда я тестирую его на консоли.Axis Client gsoap Server

Но факт в том, что я разрабатываю клиентское приложение Java, которое потребляет услугу с помощью Apache Axis, к сожалению, это не работает. Я искал информацию, которая могла бы помочь мне с этой проблемой, но я не вижу подобной реализации.

Мои Apache Axis файлы находятся в/USR/доли/Java, что значение моей переменной AXIS2_HOME, это для того, чтобы выполнить:

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

для создания файлов, а затем я выполняю:

javac -cp $AXIS2_HOME *.java 

собрать мои файлы в том числе класса 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(); 
    } 

    } 
} 

, но когда я Выполнение выражений:

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 присутствует.

Я вижу, что вы настраиваете свой путь к классу с помощью -cp $AXIS2_HOME, который не будет работать. В лучшем случае, если ваши банки в $AXIS2_HOME, то вам нужно будет сделать $AXIS2_HOME/*.jar, но все это liklihood вам нужно иметь что-то подобное:

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 

Затем вызовите приложение с:

java -cp $AXISCLASSPATH 

С что касается интеграции между Axis и Gsoap, это действительно должно быть довольно просто. Не должно быть никаких специальных вмешательств, требуемых, потому что вы пересекаете мир java и c - по крайней мере, для простых случаев использования.