java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Enterprise Java > Allgemeines EE

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 17.12.2005, 19:03   #1 (permalink)
Benutzer
int
 
Registriert seit: 06.12.2005
Fachbeiträge: 60
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard WebService Problem mit SessionBean

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:
[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??

mfg leni
leni ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 18.12.2005, 13:45   #2 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 06.12.2005
Fachbeiträge: 60
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hat keiner eine Idee, warum diese Exception geworfen wird??

leni
leni ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 18.12.2005, 13:55   #3 (permalink)
Nicht angemeldet
 
Fachbeiträge: n/a
Was für einen Application Server verwendest du und wo "in classpath" sind die Dateien?
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 18.12.2005, 15:32   #4 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 06.12.2005
Fachbeiträge: 60
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 18.12.2005, 20:51   #5 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 06.12.2005
Fachbeiträge: 60
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Weiß' jemand was ich noch ausprobieren könnte, damit ich dieses Problem lösen könnte?
leni ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 18.12.2005, 21:57   #6 (permalink)
Nicht angemeldet
 
Fachbeiträge: n/a
Kopiere GoogleBean.jar nach C:\Programme\jboss-4.0.3\server\default\deploy
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 18.12.2005, 22:14   #7 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 06.12.2005
Fachbeiträge: 60
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hmm...?? was meinst du, das GoogleBean.jar befindet sich ja bereits im deploy-Verzeichnis vom jboss...??

lg leni
leni ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 19.12.2005, 07:03   #8 (permalink)
Nicht angemeldet
 
Fachbeiträge: n/a
Zitat: leni
Hmm...?? was meinst du, das GoogleBean.jar befindet sich ja bereits im deploy-Verzeichnis vom jboss...??

lg leni
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.
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 19.12.2005, 13:52   #9 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 06.12.2005
Fachbeiträge: 60
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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??
leni ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 19.12.2005, 15:37   #10 (permalink)
Nicht angemeldet
 
Fachbeiträge: n/a
Du brauchst nur einen Deployment Descriptor über den AdminService in Axis
zu deployen, wenn ich mich recht erinnere.
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>
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 19.12.2005, 15:45   #11 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 06.12.2005
Fachbeiträge: 60
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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.....?
leni ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 19.12.2005, 18:22   #12 (permalink)
Nicht angemeldet
 
Fachbeiträge: n/a
Auch wenn du die Jar-Datei mit deinen "Bohnen" umbenennst?
z.B. in 00GoogleBean.jar
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 19.12.2005, 21:57   #13 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 06.12.2005
Fachbeiträge: 60
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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???

lg leni
leni ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 20.12.2005, 07:33   #14 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 19.07.2004
Fachbeiträge: 1.467
Abgegebene Danke: 8
Erhielt 56 Danke für 56 Beiträge
Standard wscompile

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?
Niki ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 20.12.2005, 09:06   #15 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 06.12.2005
Fachbeiträge: 60
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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
leni ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Thema geschlossen    

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Webservice Netzwerkprogrammierung 5 12.10.2007 11:14
locale SessionBean über remote SessionBean aufrufen ElHombre Allgemeines EE 0 30.09.2007 10:34
WebService mittels SessionBean aufrufen? harry Allgemeines EE 7 05.05.2007 15:25
Problem mit WebService _VisioN_ Netzwerkprogrammierung 0 28.02.2006 20:22
Web-Client - SessionBean - WebService leni Allgemeines EE 2 15.12.2005 00:14


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de