Hallo,
Ich habe einen RMI Client sowie einen Server. Der Server startet eine DerbyDB und verbindet sich damit.
Der Client verbindet sich über RMi mit dem Server und bekommt so zugriff auf die JPAController.
Mein vorhaben ist es, die Hibernate-Bibliotheken nur dem Server mitzugeben.
Der Client soll möglichst klein bleiben.
Das klappt auch alles ganz gut, nur bekommt der Client beim Aufruf der Remote-Methode eine reference auf die JPAController Klasse. (Der Client läd die Klasse nach und braucht entsprechent ein paar Hibernate Klassen. Außerdem versuct der Client bei LAzY-abfragen sich direkt mit dem DerbyServer zu verbinden, was nicht sein soll)
Jetzt ist die Frage ob ich das durch ein ArrayCopy in der RemoteFacade lösen kann , oder ob ich einen ganz anderen weg einschlagen muss.
Hier ist eine meiner RemoteFacaden
Ich hoffe man versteht mein Problem. Ich bin nicht der beste im Probleme wiedergeben :?
Ich habe einen RMI Client sowie einen Server. Der Server startet eine DerbyDB und verbindet sich damit.
Der Client verbindet sich über RMi mit dem Server und bekommt so zugriff auf die JPAController.
Mein vorhaben ist es, die Hibernate-Bibliotheken nur dem Server mitzugeben.
Der Client soll möglichst klein bleiben.
Das klappt auch alles ganz gut, nur bekommt der Client beim Aufruf der Remote-Methode eine reference auf die JPAController Klasse. (Der Client läd die Klasse nach und braucht entsprechent ein paar Hibernate Klassen. Außerdem versuct der Client bei LAzY-abfragen sich direkt mit dem DerbyServer zu verbinden, was nicht sein soll)
Jetzt ist die Frage ob ich das durch ein ArrayCopy in der RemoteFacade lösen kann , oder ob ich einen ganz anderen weg einschlagen muss.
Hier ist eine meiner RemoteFacaden
Code:
public class ZutatJpaFacade extends UnicastRemoteObject implements ZutatJpaFacadeRemote {
private volatile ZutatJpaController zutatJpaController;
public ZutatJpaFacade(
final ZutatJpaController zutatJpaController,
final int port, final RMIClientSocketFactory csf,
final RMIServerSocketFactory ssf) throws RemoteException {
super(port, csf, ssf);
this.zutatJpaController = zutatJpaController;
}
public ZutatJpaFacade(
final ZutatJpaController zutatJpaController,
final int port) throws RemoteException {
super(port);
this.zutatJpaController = zutatJpaController;
}
public void create(kochstudio.entity.Zutat zutat) {
try {
zutatJpaController.create(zutat);
} catch (PreexistingEntityException ex) {
Logger.getLogger(ZutatJpaFacade.class.getName()).log(Level.SEVERE, null, ex);
} catch (Exception ex) {
Logger.getLogger(ZutatJpaFacade.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void edit(kochstudio.entity.Zutat zutat){
try {
zutatJpaController.edit(zutat);
} catch (NonexistentEntityException ex) {
Logger.getLogger(ZutatJpaFacade.class.getName()).log(Level.SEVERE, null, ex);
} catch (Exception ex) {
Logger.getLogger(ZutatJpaFacade.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void destroy(Long id) {
try {
zutatJpaController.destroy(id);
} catch (kochstudio.persistence.exceptions.NonexistentEntityException ex) {
Logger.getLogger(ZutatJpaFacade.class.getName()).log(Level.SEVERE, null, ex);
}
}
public List<kochstudio.entity.Zutat> findZutatEntities() {
return zutatJpaController.findZutatEntities();
}
public List<kochstudio.entity.Zutat> findZutatEntities(int maxResults, int firstResult) {
return zutatJpaController.findZutatEntities(maxResults, firstResult);
}
public kochstudio.entity.Zutat findZutat(Long id) {
return zutatJpaController.findZutat(id);
}
public kochstudio.entity.Zutat findZutatByName(String name) {
return zutatJpaController.findZutatByName(name);
}
public int getZutatCount() throws RemoteException {
return zutatJpaController.getZutatCount();
}
}
Ich hoffe man versteht mein Problem. Ich bin nicht der beste im Probleme wiedergeben :?