繁体   English   中英

执行 Head First EJB 第一个示例时出错

[英]error executing Head First EJB first example

我正在关注 Head First EJB。 我知道它有 EJB 2.0,它和现在 EJB 3.1 一样旧。但我认为 Head first book 是一本适合像我们这样的业余爱好者学习的好书。

我正在使用 J2ee 1.3.1 RI 和 jdk 1.4。 我运行了“部署”工具以通过 EJB 进行部署,现在我有一个 ejb 客户端 JAVA 程序,如下所示:

import javax.naming.*;
import java.rmi.*;
import javax.rmi.*;
import headfirst.*;
import javax.ejb.*;

import java.util.*;

public class AdviceClient {
    public static void main(String[] args){
        new AdviceClient().go();
    }

    public void go(){
        try{

            Properties props=new Properties();
            props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");
            //props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
            //env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");
            //props.setProperty(Context.INITIAL_CONTEXT_FACTORY,"com.sun.enterprise.naming.SerialInitContextFactory");
            props.setProperty(Context.PROVIDER_URL,"rmi://localhost:1050"); 
            //props.setProperty("java.naming.provider.url","rmi://localhost:1099");

            Context ic = new InitialContext(props);
            Object o = ic.lookup("Advisor");

            AdviceHome home = (AdviceHome)PortableRemoteObject.narrow(o,AdviceHome.class);

            Advice advisor = home.create();
            System.out.println(advisor.getAdvice());
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }
}






Following the book, I compiled the program. The "Properties" part is something not mentioned in the example. I got it from some other examples on the web. Now, that when I am executing the client, am getting the following error:


F:\EJBProject\advice>java -classpath AdviceAppClient.jar;. AdviceClient
javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:

        java.net.SocketTimeoutException: Read timed out]
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(Unknown Source)
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(Unknown Source)
        at javax.naming.InitialContext.lookup(Unknown Source)
        at AdviceClient.go(AdviceClient.java:26)
        at AdviceClient.main(AdviceClient.java:11)
Caused by: java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
        java.net.SocketTimeoutException: Read timed out
        at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
        at sun.rmi.server.UnicastRef.newCall(Unknown Source)
        at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
        ... 5 more
Caused by: java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.io.BufferedInputStream.fill(Unknown Source)
        at java.io.BufferedInputStream.read(Unknown Source)
        at java.io.DataInputStream.readByte(Unknown Source)

请帮忙。 我被困在这里了。 我想参加 OCBDD 考试!

问候, 舒瓦尼克

终于解决了。

如果您在运行第一个 EJB 示例时遇到障碍,只需按照以下步骤运行 HeadFirst EJB 的第一个示例即可。

软件 1. j2sdk1.4.1 - jdk 2. j2sdkee1.3.1 - j2ee RI 3. CMD(命令提示符)

使用 c:\\j2sdkee1.3.1\\lib\\j2ee.jar 库编译所有类。 现在,创建一个应用程序并在 RI 中部署 EJB。 下载本书中所示的应用程序客户端。

现在,棘手的部分来了。

使用以下 jars 编译客户端类

javac -classpath AdviceAppClient.jar;c:\\j2sdkee1.3.1\\lib\\j2ee.jar AdviceClient.java

接下来,运行客户端如下

java -cp AdviceAppClient.jar;c:\\j2sdkee1.3.1\\lib\\j2ee.jar;c:\\j2sdk1.4.1\\jre\\lib\\rt.jar;。 咨询客户

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM