WebService Problem mit SessionBean

Status
Nicht offen für weitere Antworten.

leni

Aktives Mitglied
Hallo,

ich habe einen Web-Client für das Google-WebService geschrieben mit Apache Axis. Also mit wsdl2java die klassen generiert und funktioniert auch tadellos. Ein kleiner Ausschnitt aus dem Client:

Code:
GoogleSearchService service = new GoogleSearchServiceLocator();

	    	// Now use the service to get a stub to the Service Definition Interface (SDI)
	    	GoogleSearchPort google = service.getGoogleSearchPort();
			
			GoogleSearchResult googleSearchResult =  google.doGoogleSearch(GOOGLE_KEY, // java.lang.String key
							  q.toString(), //java.lang.String q
							  0, // int start
							  10, // int maxResults
							  false, //boolean filter
							  "", // java.lang.String restrict        
							  false, //boolean safeSearch                
							  "lang_ja|lang_en", // java.lang.String lr
							  "UTF-8", // java.lang.String ie
							  "UTF-8"); // java.lang.String oe

Jetzt muss ich den Web-Client in ein SessionBean packen. Also habe ich den Code des Web-Clients in einer Methode definiert und in ein SesionBean gepackt und einen Client für das SessionBean geschrieben. Jedoch wenn dann vom SessionBean die Methode für das Konsumieren des GoogleWebServices aufgerufen wird, kommt immer folgender Fehler:

Java:
 Exception in thread "main" java.rmi.ServerError: Unexpected Error; nested exception is:
[code=Java] java.lang.NoClassDefFoundError: GoogleSearch/GoogleSearchService

Jedoch sind die notwendigen Klassen, wie GoogleSearchService, etc. ganz sicher im classpath, also die Klassen sind sicher verfügbar. Und der Code funktioniert auch, habe es ja im Rahmen des Web-Clients ausprobiert. 

Weiß da jemand weiter? Gibts irgendwas auf das man achten muss wenn man in einem SessionBean einen WebService in Anspruch nimmt?? :bahnhof: 

mfg leni
 
G

Guest

Gast
Was für einen Application Server verwendest du und wo "in classpath" sind die Dateien?
 

leni

Aktives Mitglied
Hallo,

ich verwenden den JBoss-Server 4.0.3

und mein Ant-build file sieht folgendermaßen aus, da sieht man auch dass ich beim ausführen des clients (java) den classpath angebe:
(Im lib-Verzeichnis meines Eclipse-Projekts sind alle notwendigen jars, also die apache-axis-jars und das jar, das die vom wsdl-file generierten Klassen enthält)
Code:
<?xml version="1.0"?>
<project name="myapp" basedir="." default="run-client">

  <target name="init">
    <!--
    Set the following three properties at command line, e.g.:
    ant -Dtestapp=MyTstApp -Djarfile=MyApp.jar -Dpackage=mypackage
    <property name="testapp"          value="..." />
    <property name="jarfile"          value="..." />
    <property name="package"          value="..." />
    -->
    <property name="src.dir"          value="${basedir}/src" />
    <property name="classes.dir"      value="${basedir}/bin" />
    <property name="jboss.client.dir" value="C:\Programme\jboss-4.0.3\client" /> 
    <property name="jboss.deploy.dir" value="C:\Programme\jboss-4.0.3\server\default\deploy" />
  	<property name="testapp"          value="google.client.GoogleSessionClient" />
  	<property name="jarfile"          value="GoogleBean.jar" />
  	<property name="package"          value="google/ejb" />
  	<property name="lib" 			  value="${basedir}/lib"/>
  	
  	<path id="project.class.path">
  	   	<fileset dir="${lib}">
  	       	<include name="**/*.jar" />
  	 	</fileset>
  	 </path>
  </target>

  <target name="compile" depends="init">
    <mkdir dir="${classes.dir}" />
    <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="project.class.path" debug="true" deprecation="true">
      <classpath>
        <fileset dir="${jboss.client.dir}">
          <include name="**/*.jar" />
          <include name="task1.jar"/>
        </fileset>
      	<pathelement path="${lib}"/>
      	<pathelement location="**/*.jar"/>
      </classpath>      
    </javac>
  </target>

  <target name="jar" depends="init,compile">
    <jar jarfile="${jarfile}">
      <metainf dir="${src.dir}/${package}" includes="**/*.xml" />
      <fileset dir="${classes.dir}">
        <include name="${package}/*.class" />
      </fileset>
    </jar>
  </target>

  <target name="deploy" depends="jar">
    <copy todir="${jboss.deploy.dir}">
      <fileset dir="${src.dir}/${package}">
        <include name="*-service.xml" />
      </fileset>
    </copy>
    <copy todir="${jboss.deploy.dir}" file="${jarfile}" />
  </target>

  <target name="undeploy" depends="init">
    <delete file="${jboss.deploy.dir}/${jarfile}" />
  </target>

  <target name="clean" depends="init" description="Clean all build products.">
    <delete>
      <fileset dir="${classes.dir}">
        <include name="**/*.class" />
      </fileset>
    </delete>
    <delete file="${jarfile}" />   
  </target>

  <target name="all" depends="init,jar,deploy" description="Build everything.">
    <echo message="Application built." />
  </target>

  <target name="run-client" depends="all">
    <java fork="true" classname="${testapp}" classpathref="project.class.path">
      <classpath>
        <fileset dir="${jboss.client.dir}">
          <include name="**/*.jar" />
        </fileset>
        <pathelement path="." />
        <pathelement path="${classes.dir}" />
        <pathelement path="${env.CLASSPATH}" />
      	<pathelement path="${lib}"/>
      	<pathelement location="**/*.jar"/>
      </classpath>      
    </java>
  </target>

</project>

Hilft dir das??:(

leni
[/code]
 

leni

Aktives Mitglied
Weiß' jemand was ich noch ausprobieren könnte, damit ich dieses Problem lösen könnte?:(
 
G

Guest

Gast
Kopiere GoogleBean.jar nach C:\Programme\jboss-4.0.3\server\default\deploy
 

leni

Aktives Mitglied
Hmm...?? was meinst du, das GoogleBean.jar befindet sich ja bereits im deploy-Verzeichnis vom jboss...?? :bahnhof:

lg leni
 
G

Guest

Gast
leni hat gesagt.:
Hmm...?? was meinst du, das GoogleBean.jar befindet sich ja bereits im deploy-Verzeichnis vom jboss...?? :bahnhof:

lg leni
:autsch: Sorry, ich meinte die generierten Klassen für den Zugriff auf die Google-Services
und alles, was dazu gehört (axis.jar etc.).
Kopiere die Google-Klassen nach jboss3/server/default/lib, dann sind sie für jede App verfügbar.
Bei den 3.x Versionen von JBoss ist die Deployment-Reihenfolge wichtig gewesen, wenn
man Jar's deployd. z.B. a.jar wird vor b.jar deployd so dass die Klassen aus b.jar für a.jar
unbekannt sind. Eine Möglichkeit ist die komplette Application als EAR zu deployen oder
einen Präfix vor die Daeinamen der Jar-Dateien zu setzen. z.B. 0b.jar, a.jar. Damit wird
0b.jar zuerst deployed und ist für a.jar bekannt.
Siehe dazu
<attribute name="URLComparator">org.jboss.deployment.scanner.PrefixDeploymentSorter</attribute>
in jboss#/server/default/conf/jboss-service.xml
Ich hoffe es hilft. JBoss 4 habe ich noch nocht ausprobiert, da ich leider bisher keine Zeit
dazu hatte.
 

leni

Aktives Mitglied
okay danke jetzt hat es funktioniert :) gott sei dank!

Eine Frage hätte ich da jetzt noch: Ich habe das SessionBean nun als WebService deployed mit Apache Axis, jedoch muss ich dazu immer die class-files in ein von mir angelegtes classes-verzeichnis unter der webapps/axis im jboss-deploy Verzeichnis geben. Ist das normal? - sonst findet er die Klassen leider nicht....gibts da noch eine andere Möglichkeit??:(
 
G

Guest

Gast
Du brauchst nur einen Deployment Descriptor über den AdminService in Axis
zu deployen, wenn ich mich recht erinnere. ???:L
z.B.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
  <service name="TranslationService" provider="java:EJB">
    <parameter name="beanJndiName" value="TranslationEJB"/>
    <parameter name="homeInterfaceName" value="package.TranslationHome"/>
    <parameter name="remoteInterfaceName" value="package.TranslationRemote"/>
    <parameter name="allowedMethods" value="*"/>
    <parameter name="className" value="package.TranslationBean"/>
  </service>
</deployment>
 

leni

Aktives Mitglied
Ja das ist klar, habe ich auch gemacht, nur wenn die entsprechenden KLassen (SessionBean, Home und Remote-Interface) nicht im classes Verzeichnis vom webapps/axis verzeichnis vom jobss liegen findet er die klassen nicht.....?
 
G

Guest

Gast
Auch wenn du die Jar-Datei mit deinen "Bohnen" ;) umbenennst?
z.B. in 00GoogleBean.jar
 

leni

Aktives Mitglied
Hi,

mir ist nicht ganz klar, auf was du hinauswillst?? - Ich habe folgendes Verzeichnis im jboss C:\Programme\jboss-4.0.3\server\default\deploy\webapps\axis.war\WEB-INF\classes definiert (bzw. das axis.war musst man sowieso definieren damit axis funktioniert, WEB-INF und classes habe ich selbst dazudefiniert) und dann einfach hier die packages reingestellt, damit er wenn ich das sessionbean als web service deployed habe und im browser ansehen möchte auch die klassen findet, das funktioniert auch, aber ich bin mit der Lösung gar nicht zufrieden....:((

Weißt du eine elegantere Methode sagen??? :bahnhof: :bahnhof:

lg leni
 

Niki

Top Contributor
Ich muss komischer Weise das selbe zur Zeit auch machen... GoogleSearchService erstellen... in Bean packen... als Web-Service deployn....

Hab mir mal die Klassen mit wscompile generiert, hab gelesen dass sich JBoss nicht wirklich gut mit axis verträgt. Hab die generierten Klassen in ein jar gepackt und ins jboss/lib/endorsed verzeichnis gegeben. Wenn ich jedoch die Methode von meinem Bean aufrufen will reißt es den JBoss komplett nieder, bekomm leider keinerlei Stacktrace am Server. Auch wenn ich das GoogleService am Client verwenden möchte bekomm ich einen Verfication-Error oder irgend sowas ähnliches. Womit kann das zusammen liegen?
 

leni

Aktives Mitglied
Nein, also ich hatte noch keine Probleme mit Axis und JBoss und überhaupt ist die Erstellung mit Axis um einiges leichter und angenehmer als mit dem JWSDP.

@Gast: Was meinst du zu meiner Lösung, gibt es da keinen eleganteren Weg? - mit einem jar-file oder so?

danke im voraus

leni
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O eclipse - tomcat: Problem bei einfachem Webservice Allgemeines EE 16
M einfacher REST Webservice Allgemeines EE 4
M RESTful Webservice mit json Allgemeines EE 2
A Webservice (SOAP) Lookup Allgemeines EE 1
D Webservice benutzen Allgemeines EE 4
S Welcher Java EE Applikationserver für RESTful Webservice? Allgemeines EE 2
N Authentication/UserPrincipal mit Rest Webservice? Allgemeines EE 6
N WebService WAR-File auf Tomcat-Server Allgemeines EE 1
B Inject webservice von cxf.xml Allgemeines EE 1
F ein wenig Hilfe - Webservice Allgemeines EE 1
D Servlet Webservice Konfigurationsdateien Best Practice Allgemeines EE 3
D Java Projekt goes Webservice Allgemeines EE 6
H SQL Daten von Webservice an Client übergeben Allgemeines EE 3
G WebService Concurrency Allgemeines EE 6
G WebService portieren Allgemeines EE 11
H Webservice testen Allgemeines EE 7
M Webservice - Anhang senden und codieren Allgemeines EE 4
M Spring: Bean als Webservice freigeben Allgemeines EE 9
O webservice mit java erstellen. was brauch ich alles dazu? Allgemeines EE 53
B .net-Webservice aufrufen Allgemeines EE 9
C HashMap über Webservice übertragen Allgemeines EE 2
G REST Webservice Allgemeines EE 11
H WebService mittels SessionBean aufrufen? Allgemeines EE 7
F JBoss WebService Allgemeines EE 3
S webservice mit tomcat und axis ohne eclipse laufen lassen? Allgemeines EE 2
G WebService Client: Parameterübergabe Allgemeines EE 9
R Bei AXIS-Start gleich WebService starten Allgemeines EE 2
R Embedded WebService-Server Allgemeines EE 4
L Web-Client - SessionBean - WebService Allgemeines EE 2
C WebService deployen .Verzweiflung. Allgemeines EE 2
M Google - WebService Allgemeines EE 3
M Probleme beim Webservice Deployment(Sun ApplicationServer) Allgemeines EE 2
D Problem mit Update von ApacheHttpClient von 5.2 auf 5.3 Allgemeines EE 10
D Problem mit redundanten Servern Allgemeines EE 7
Azemaria JSF: Problem bei der einfachsten Applikation Allgemeines EE 2
P JPA Internal Problem Nullpointer Allgemeines EE 10
S MessageDrivenBean Problem beim Zugriff auf Stateful EJB Allgemeines EE 2
M Glassfish Deployment-Problem unter Eclipse Allgemeines EE 0
B Problem beim Lesen des Codes... Allgemeines EE 2
R JPA Problem beim Speichern eines Users Allgemeines EE 2
S WebSocket Problem Allgemeines EE 0
F Eclipse/Java EE Debug-Problem Allgemeines EE 1
G Problem: Servlet in JSP einbinden mit <jsp:include> Allgemeines EE 3
Raidri [SEAM] rich:dataTable sortBy Problem Allgemeines EE 6
T Problem mit den Beispielen von Apache Allgemeines EE 5
W JSF Validator Problem HTTP Status 500 Allgemeines EE 2
E JBoss 7.1 Datasource Problem Allgemeines EE 2
M JSP Problem -unbestimmte Anzahl von Werten Transportieren Allgemeines EE 9
S Problem mit EJB Verständnis Allgemeines EE 4
B Problem beim einbinden einer CSS in eine JSP Allgemeines EE 8
F JSP Problem mit Datenbankanbindung über Glassfishserver Allgemeines EE 4
S java Entities Problem Allgemeines EE 19
S Embedded JBoss Problem beim Deployment Allgemeines EE 4
E Session Problem Allgemeines EE 9
F problem mit nullpointer bei DB zugriff Allgemeines EE 2
A Erste Schritte... Problem mit Hibernate Allgemeines EE 15
ruutaiokwu jboss problem - work-verzeichnis muss manuell gelöscht werden??? Allgemeines EE 5
Stillmatic sendRedirect Problem! Allgemeines EE 3
M Problem mit Lookup auf EJB3 mit Glassfish Allgemeines EE 11
0 Problem mit librarys javax.servlet.http.HttpServletRequest cannot be resolved Allgemeines EE 1
X JBoss InitialContext problem Allgemeines EE 5
LordZed Problem mit dem einbinden von Bibliotheken, die sich gegenseitig verwenden Allgemeines EE 5
H GWT Problem beim Ausführen Allgemeines EE 8
Q Problem mit JMS und Weblogic 10 Allgemeines EE 5
E Performance-Problem beim ersten Request Allgemeines EE 4
G Multi User Problem Allgemeines EE 8
G Datasource Problem Allgemeines EE 1
J OOP Java Array Problem Allgemeines EE 2
T Problem mit Java Transaction API Allgemeines EE 2
D Problem mit EJB: Bean soll Objekt eigener Klasse zurückgeben Allgemeines EE 2
N JavaMail Problem Allgemeines EE 4
N JBoss Problem mit Bibliothek in unterschiedlichen Versionen Allgemeines EE 2
A Tomcat -- JSP: komisches Problem Allgemeines EE 11
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
B Problem mit ActionListener Allgemeines EE 13
G Simples JSF-Projekt in Eclipse - Problem Allgemeines EE 9
J Problem mit EJB Aufruf und DualCore Rechner Allgemeines EE 4
J ejb3.0 datenbank problem Allgemeines EE 2
J Problem mit Zurück-Button Allgemeines EE 2
T Tomcat: JNDI + JDBC Problem Allgemeines EE 3
J problem mit jsp/js Allgemeines EE 2
B Help - EJB2 - Problem mit Hybernate und "LIMIT" Allgemeines EE 6
B JSTL Problem Allgemeines EE 8
byte Tomcat Deployment Problem (HTTP Status 503) Allgemeines EE 8
S Problem mit t:selectOneRadio und ValueChangeListener Allgemeines EE 2
S Problem mit Struts und tiles Allgemeines EE 4
B Problem mit JBoss-4.2.1.GA Allgemeines EE 8
N Tiles - JSF Problem Allgemeines EE 3
M JSF & EJB "Bean not bound" Problem Allgemeines EE 4
V MYSQL JDBC;java.lang.ClassNotFoundException; Problem Eclipse Allgemeines EE 3
megachucky JMS - Problem mit TemporaryQueue Allgemeines EE 2
G Problem mit MimeType/ContentType Allgemeines EE 4
E Java Mail problem Allgemeines EE 5
Y XFire - Maven Build Problem Allgemeines EE 2
D JSP Problem mit equals? Allgemeines EE 2
A Eclipse Start-Problem Allgemeines EE 5
S JSF - Custom converter Problem Allgemeines EE 3
Y JSF Uhrzeitausgabe Problem Allgemeines EE 4
M servlet --> jsp - problem beim umstrukturieren Allgemeines EE 5
Y JSF - rendered Problem Allgemeines EE 1

Ähnliche Java Themen

Neue Themen


Oben