EJB Cast-Problem

Status
Nicht offen für weitere Antworten.

Knate

Mitglied
Hi! ich habe versucht mir im internet hilfe zu verschaffen, jedoch konnte ich nichts finden, weil ich eigentlich nicht genau weiß, wonach ich eigentlich suchen soll.

Ich habe folgendes Problem mit EJB:

Ich habe eine persistente Klasse "Produkt" und in meiner session-bean gebe ich alle Rows mittels der Methode

Code:
public List<Produkt> getAllProducts() {
         String sql = "select * from Produkt";
         return entityManager.createNativeQuery(sql).getResultList();
}
(gibt es eigentlich eine Möglichkeit ohne SQL alle Rows zurückzugeben????)

zurück.

Dann hab ich noch ein Servlet, dass diese Liste mittels ObjectOutputStream meiner Clientanwendung übergibt.

in der Clientanwendung:
Code:
URL url = new URL("http://localhost:8080/ejb/"+servletname);
URLConnection con = url.openConnection();
			
ObjectInputStream is = new ObjectInputStream(con.getInputStream());
test = (List<Object>)is.readObject();

In test sind nun diese Objekte, jedoch weiß ich jetzt nicht, wie ich diese Objekte auf Produkt casten kann, um die getter und setter-Methoden nutzen zu können.

Würde mich über Hilfe sehr freuen.

Mfg
Knate
 

foobar

Top Contributor
(gibt es eigentlich eine Möglichkeit ohne SQL alle Rows zurückzugeben????)
Klar

Code:
public List<Produkt> getAllProducts()
{
      return entityManager.createQuery("from Produkt x").getResultList();
}
 

Knate

Mitglied
Danke für deine Antwort, jedoch finde ich, dass auch dieser code sql ist.

egal, darum gehts mir ja nicht, es geht mir vielmehr ums Casten der Objekte (Rows) in der Liste, die ich in meiner Client-Anwendung erhalte.... :(


Mfg
 

foobar

Top Contributor
Das ist kein SQL sondern JPQL.

Welches Webframework verwendest du denn? Vom Client aus einen Inputstream per Http zu holen sieht etwas merkwürdig aus. Du kannst doch aus dem Servlet auf die EJBs zugreifen. Also entweder injizieren lassen oder per JNDI.
 

Knate

Mitglied
tomcat 6.0

ich greif ja vom servlet auf die ejbs zu, nur in der client-anwendung (eigenes projekt --> keine Klasse "Produkt" zum casten vorhanden) ruf ich dann das servlet auf, von dem ich alle rows zurückbekomme.

lg
 

foobar

Top Contributor
Du kannst vom (remote) Client per JNDI(RMI) auf den EJB-Container zugreifen. Alternativ kannst du auch die Services per SOAP exportieren, dann haste auch wieder die Pojos und Serviceinterfaces auf der Clientseite.
 

foobar

Top Contributor
Mit RMI bekommst du auf Clientseite das was du auf Serverseite anbietest also dein Serviceinterface.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben