Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RMI服务器赢得';t返回类实例_Java_Jsp_Rmi - Fatal编程技术网

Java RMI服务器赢得';t返回类实例

Java RMI服务器赢得';t返回类实例,java,jsp,rmi,Java,Jsp,Rmi,我有一个JSP/Servlet应用程序,在MySQL中运行正常。现在我必须为我的DAO使用RMI实现相同的应用程序 通过一些测试,我可以看到当我返回int、String或类似的内容时,它运行良好。使用这些类型的对象的远程方法可以很好地工作 但是当我尝试调用一个远程方法返回我创建的类的实例(Produto)时,该对象的所有属性都是null 例如:我有一个包含3行的db表。该方法返回一个包含3个对象的列表,但如果我调用product.getName(),例如,我会得到以下结果: 空的 无效的 空的

我有一个JSP/Servlet应用程序,在MySQL中运行正常。现在我必须为我的DAO使用RMI实现相同的应用程序

通过一些测试,我可以看到当我返回
int
String
或类似的内容时,它运行良好。使用这些类型的对象的远程方法可以很好地工作

但是当我尝试调用一个远程方法返回我创建的类的实例(
Produto
)时,该对象的所有属性都是
null

例如:我有一个包含3行的db表。该方法返回一个包含3个对象的列表,但如果我调用
product.getName()
,例如,我会得到以下结果:

空的 无效的 空的

在下面的代码中,我甚至没有使用任何数据库方法。这只是一个测试方法,用于查看对象
produto
将返回
null
属性

我的界面,ProdutoDAO:

public interface ProdutoDAO extends Remote{ 
    public Produto teste() throws RemoteException;
}
我的(什么是我的服务器)产品目录:

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();
}
Produto-prod=new-Produto();
试一试{
Registry Registry=LocateRegistry.getRegistry(null);
ProdutoDAO ProdutoDAO=(ProdutoDAO)registry.lookup(“ProdutoDAO”);
prod=produtoDAO.teste();
%> 好吧,我知道了

使我的Produto类可序列化,并在Eclipse上重新生成串行版本

public final class Produto implements Serializable {

     private static final long serialVersionUID = 8367908553994431734L;
     ...

}

该类需要实现可序列化或是导出的远程对象。您的既不是