Objektübergabe von Client zum Server

  • Themenstarter Themenstarter Morbi
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

Morbi

Gast
Hi,

ich bin gerade dabei zum ersten mal mit J2EE eine Server-Client-Anwendung auf einem JBoss Server zu bauen.
Zum laufen gekriegt hab ich soweit alles, nun gehts ans programmieren ^^
Und da steh ich jetzt vor einem Problem.
Undzwar möchte ich auf client Seite ein Objekt erzeugen und Dieses dann an den Server schicken.
Der Server soll aus dem Objekt einige Werte auslesen und mit diesen dann weiter arbeiten.
Ich habe gehört, dass das über Interfaces funktionieren soll, sprich das man dem Server ein Interface von dem Objekt verpasst, welches er gesendet bekommt und worüber er dann die get-Methoden aufruft.
Allerdings weiß ich nicht genau, wie das nun konkret aussieht.
Habt ihr da vielleicht nen Link oder eine Erläuterung für mich. Hab schon gegoogelt, bin aber nicht wirklich fündig geworden.

MFG
Morb
 
RMI ist ein Objekt-Übergabe-Mechanismus in Java,
hat dann aber mit J2EE nix mehr zu tun, bei J2EE sprechen alle das Java-unabhängige HTML + HTTP
 
Anonymous hat gesagt.:

Die Kommunikation zwischen Client und JBoss erfolgt über HTTP.

Am Besten informierst du dich zunächst über:
a) HTTP
b) Servlet-Technologie
c) JSP-Technologie

Dann dürfte einiges klarer werden.
 
Die Beschränkung J2EE auf HTTP ist nicht korrekt. Das gilt nur für Webcontainer.

J2EE-Applikationen kommunizieren außer HTTP/HTML/Web auch per RMI-IIOP Bedingung ist allerdings, dass auf dem Client ein J2EE Application Client läuft, und kein Webbrowser.
 
Gast hat gesagt.:
Die Beschränkung J2EE auf HTTP ist nicht korrekt. Das gilt nur für Webcontainer.

J2EE-Applikationen kommunizieren außer HTTP/HTML/Web auch per RMI-IIOP Bedingung ist allerdings, dass auf dem Client ein J2EE Application Client läuft, und kein Webbrowser.

Hmm, kannte ich noch garnicht. Kann man dann wohl auch machen. Dann sind Servlets und JSPs natürlich überflüssig.
 
Also, ich hab das jetzt folgender Maßen gelöst: ich hab dem Objekt, welches ich übergeben möchte, ein Interface spendiert. Im Client erzeuge ich nun sowohl das Objekt als auch das Interface, weise dem Interface das Objekt zu und schicke das Interface dann an den Server. Somit kann der Server die im Interface vordefinierten Methoden auf dem Objekt aufrufen. Wenn ich das ganze nun laufen lassen möchte, kriege ich folgende Fehlermeldung auf client-Seite, mit der ich rein gar nichts anfangen kann.

Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
at $Proxy0.checkAvailable(Unknown Source)
at client.EJB30Client.main(EJB30Client.java:34)
Caused by: java.lang.ClassNotFoundException: [Ljava.lang.StackTraceElement;
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.jboss.remoting.loading.RemotingClassLoader.loadClass(RemotingClassLoader.java:50)
at org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:139)
at java.i😵bjectInputStream.readNonProxyDesc(Unknown Source)
at java.i😵bjectInputStream.readClassDesc(Unknown Source)
at java.i😵bjectInputStream.readArray(Unknown Source)
at java.i😵bjectInputStream.readObject0(Unknown Source)
at java.i😵bjectInputStream.defaultReadFields(Unknown Source)
at java.i😵bjectInputStream.readSerialData(Unknown Source)
at java.i😵bjectInputStream.readOrdinaryObject(Unknown Source)
at java.i😵bjectInputStream.readObject0(Unknown Source)
at java.i😵bjectInputStream.defaultReadFields(Unknown Source)
at java.i😵bjectInputStream.readSerialData(Unknown Source)
at java.i😵bjectInputStream.readOrdinaryObject(Unknown Source)
at java.i😵bjectInputStream.readObject0(Unknown Source)
at java.i😵bjectInputStream.readObject(Unknown Source)
at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObject(JavaSerializationManager.java:128)
at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:66)
at org.jboss.remoting.transport.socket.SocketClientInvoker.transport(SocketClientInvoker.java:279)
at org.jboss.remoting.RemoteClientInvoker.invoke(RemoteClientInvoker.java:143)
at org.jboss.remoting.Client.invoke(Client.java:525)
at org.jboss.remoting.Client.invoke(Client.java:488)
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:55)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:77)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102)
... 2 more

Vielleicht weiß ja einer von euch weiter...
Damit wäre mir auf jedenfall sehr geholfen.
 
Du bist auf dem Holzweg.

Du musst schon das ganze OBjekt vom Client zum Server schicken, ausser natürlich du hast vor, einen eigenen EJB/CORBA Server aufzusetzen und den Cient darin laufen zu lassen...
 
Oh, ok.
Hab nicht vor nen eignene EJB Server aufzusetzen.
Die Serverdatein sollen auf dem JBoss liegen und der Client halt lokal ausgeführt werden.
Also dann das ganze Objekt rüberschicken.
Dann brauch der Server aber auch die Klasse des Objekts, welches er erhält ?!
 
Dann brauch der Server aber auch die Klasse des Objekts, welches er erhält ?!
Richtig, alle Klassen der Objekte die vom Server zum Client können (und umgekehrt) müssen sowohl dem Client als auch dem Server bekannt sein.
 
Ach ja, alle Klassen müssen natürlich serialisierbar sein 😉

Nachtrag: Was ist den dein Client?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben