运行出现下列异常
NamingException caught in getConnected: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
java.lang.NullPointerException
at chapter15.ObjectExample1.main(ObjectExample1.java:59)
Exception in main: null//下面是获得DataSource
InitialContext ctx = new InitialContext( );
DataSource ds = (DataSource) ctx.lookup("objects");jndi.properties的内容:
java.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory
java.provider.url=rmi://localhost:1099
这个jndi.properties应该放在哪里啊
NamingException caught in getConnected: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
java.lang.NullPointerException
at chapter15.ObjectExample1.main(ObjectExample1.java:59)
Exception in main: null//下面是获得DataSource
InitialContext ctx = new InitialContext( );
DataSource ds = (DataSource) ctx.lookup("objects");jndi.properties的内容:
java.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory
java.provider.url=rmi://localhost:1099
这个jndi.properties应该放在哪里啊
不知道这句java.provider.url=rmi://localhost:1099是什么意思,这是书上抄的
JNDI不是这样拿的。。
一种是用
Hashtable env =new Hashtable();
env.put(Context.INIAL_CONTEXT_FACTORY,"com.sun.jndi.rmi.registry.RegistryContextFactory");
env.put(Context.PROVIDER_URL,"rmi://localhost:1099");
InitalContext ctx=new InitialContext(env);
直接InitalContext ctx=new InitialContext()就可以了,
你的问题出在(DataSource) ctx.lookup("objects");这一句上面,你用的是什么服务器,配置了datasource了吗?
如果是tomcat,通常是这样写ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
---------------像这样的应用程序,也是分成两部分,一部分是服务端,一部分是客户端。你亮出来的代码,是属于客户端的。