日期:2014-05-18  浏览次数:20648 次

求助!关于远程调用EJB3.0
在java项目中调用部署在glassfish中的EJB时报错:
//java代码:
    public class FirstEjbClient {
    public static void main(String[] args){
        Properties props = new Properties();
        try{
            props.load(new FileInputStream("jndi.properties"));
            InitialContext context = new InitialContext(props);  
            FirstEjb firstEjb = (FirstEjb)context.lookup("FirstEjbBean"); 
            String someting = firstEjb.saySometing("李斯");
            System.out.println(someting);
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}

//jndi.properties
java.naming.factory.initial = com.sun.enterprise.naming.SerialInitContextFactory
java.naming.factory.url.pkgs = com.sun.enterprise.naming
java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl
org.omg.CORBA.ORBInitialHost = localhost
org.omg.CORBA.ORBInitialPort = 3700

EJB部署成功,执行main方法报错如下:
java.io.FileNotFoundException: D:\WorkSpace\config\security.properties (系统找不到指定的路径。)
java.io.FileNotFoundException: D:\WorkSpace\config\ejb.properties (系统找不到指定的路径。)

求大虾指教!!
glassfish ejb properties

------解决方案--------------------
文件路径问题,两个配置文件打在ejb包中了吗?没有,需要按照实际部署,修改配置文件路径值
------解决方案--------------------
可以使用eclipse的打包工具
将整个EJB项目,打成war包,并部署到相应目录。
------解决方案--------------------
之前理解错误了,是客户端初始化时候找不到配置文件


D:\WorkSpace\config\security.properties 路径中怎么没有你客户端项目名?难道你的项目名称是config?

如果为快速测试,不妨使用setProperty(String key, String value) 直接设置参数


------解决方案--------------------
如果jndi.properties在src目录下,直接Context context = new InitialContext(),默认加载src下的jndi.properties