У меня было приложение JSP/Servlet, работающее с MySQL. Теперь мне пришлось реализовать одно и то же приложение с RMI для моих DAO.Сервер RMI не будет возвращать экземпляры классов
Через некоторые тесты я вижу, что он отлично работает, когда я возвращаю int
, String
или что-то в этом роде. Удаленные методы с этими типами объектов прекрасно работают.
Но когда я пытаюсь вызвать удаленный метод, который возвращает экземпляр созданного мной класса (Produto
), все атрибуты этого объекта: null
.
Например: У меня есть таблица db с 3 строками. Этот метод возвращает список с 3-мя объекты на него, но если я называю product.getName()
, например, я получаю это:
нуля нуля нуля
На следующем коде, я даже не используя любые методы базы данных. Просто метод тестирования, чтобы увидеть, что объект produto
будет возвращен с атрибутами null
.
Мой интерфейс, ProdutoDAO:
public interface ProdutoDAO extends Remote{
public Produto teste() throws RemoteException;
}
Мой (что бы мой сервер) ProdutoDAOImpl:
public class ProdutoDAOImpl implements ProdutoDAO {
private Connection con;
Produto prod = new Produto();
public ProdutoDAOImpl() throws RemoteException {
con = Conecta.getConnection();
}
public Produto teste(){
prod.setNome("Testing! THIS WILL RETURN AS NULL");
return prod;
}
public static void main(String args[]) {
int port = 1099;
try {
ProdutoDAOImpl obj = new ProdutoDAOImpl();
ProdutoDAO stub = (ProdutoDAO) UnicastRemoteObject.exportObject(obj, 0);
Registry registry = LocateRegistry.createRegistry(port);
registry.bind("ProdutoDAO", stub);
System.err.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
}
index.jsp
Produto prod = new Produto();
try {
Registry registry = LocateRegistry.getRegistry(null);
ProdutoDAO produtoDAO = (ProdutoDAO) registry.lookup("ProdutoDAO");
prod = produtoDAO.teste();
%><%= prod.getNome() %><%
} catch (Exception e) {
System.err.println("Client exception: " + e.toString());
e.printStackTrace();
}
Проблема заключается в том, что <%= prod.getNome() %>
является печать null
.
Возможно ли вернуть объект, чтобы я мог прочитать его правильные атрибуты?