如题:如果不用properties文件直接在代码里设置,程序可以运行,部分代码如下:
.....
Context ctx = null;
Properties props = new Properties(); props.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
props.setProperty(Context.PROVIDER_URL,
"t3://localhost:7001");
props.setProperty(Context.SECURITY_CREDENTIALS, "weblogic08");
props.setProperty(Context.SECURITY_PRINCIPAL, "weblogic"); System.out.println(props.getProperty(Context.INITIAL_CONTEXT_FACTORY));
System.out.println(props.getProperty(Context.PROVIDER_URL));
System.out.println(props.getProperty(Context.SECURITY_CREDENTIALS));
System.out.println(props.getProperty(Context.SECURITY_PRINCIPAL));
try {
ctx = new InitialContext(props);
.......
运行文件一切正常,能正常打印出各键的值
如果使用properties文件就就执行不了了
properties文件内容: Context.INITIAL_CONTEXT_FACTORY=weblogic.jndi.WLInitialContextFactory
Context.PROVIDER_URL=t3://localhost:7001
Context.SECURITY_CREDENTIALS=weblogic08
Context.SECURITY_PRINCIPAL=weblogic java部分代码:
.......
Context ctx = null;
Properties props = new Properties();
FileInputStream in = new FileInputStream("src/JDBC/database.properties");
props.load(in);
in.close();
System.out.println(props.getProperty(Context.INITIAL_CONTEXT_FACTORY));
System.out.println(props.getProperty(Context.PROVIDER_URL));
System.out.println(props.getProperty(Context.SECURITY_CREDENTIALS));
System.out.println(props.getProperty(Context.SECURITY_PRINCIPAL)); try {
ctx = new InitialContext(props);
...... 运行文件时
打印各键的值均为null,如果给键套上双引号,就能把值打印出来。
但是运行到 ctx = new InitialContext(props);这一段时都会报错
javax.naming.NoInitialContextException: 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 有哪位大哥知道是怎么回事吗,该怎么改?
.....
Context ctx = null;
Properties props = new Properties(); props.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
props.setProperty(Context.PROVIDER_URL,
"t3://localhost:7001");
props.setProperty(Context.SECURITY_CREDENTIALS, "weblogic08");
props.setProperty(Context.SECURITY_PRINCIPAL, "weblogic"); System.out.println(props.getProperty(Context.INITIAL_CONTEXT_FACTORY));
System.out.println(props.getProperty(Context.PROVIDER_URL));
System.out.println(props.getProperty(Context.SECURITY_CREDENTIALS));
System.out.println(props.getProperty(Context.SECURITY_PRINCIPAL));
try {
ctx = new InitialContext(props);
.......
运行文件一切正常,能正常打印出各键的值
如果使用properties文件就就执行不了了
properties文件内容: Context.INITIAL_CONTEXT_FACTORY=weblogic.jndi.WLInitialContextFactory
Context.PROVIDER_URL=t3://localhost:7001
Context.SECURITY_CREDENTIALS=weblogic08
Context.SECURITY_PRINCIPAL=weblogic java部分代码:
.......
Context ctx = null;
Properties props = new Properties();
FileInputStream in = new FileInputStream("src/JDBC/database.properties");
props.load(in);
in.close();
System.out.println(props.getProperty(Context.INITIAL_CONTEXT_FACTORY));
System.out.println(props.getProperty(Context.PROVIDER_URL));
System.out.println(props.getProperty(Context.SECURITY_CREDENTIALS));
System.out.println(props.getProperty(Context.SECURITY_PRINCIPAL)); try {
ctx = new InitialContext(props);
...... 运行文件时
打印各键的值均为null,如果给键套上双引号,就能把值打印出来。
但是运行到 ctx = new InitialContext(props);这一段时都会报错
javax.naming.NoInitialContextException: 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 有哪位大哥知道是怎么回事吗,该怎么改?
如果使用properties文件就就执行不了了
properties文件内容: Context.INITIAL_CONTEXT_FACTORY=weblogic.jndi.WLInitialContextFactory
Context.PROVIDER_URL=t3://localhost:7001
Context.SECURITY_CREDENTIALS=weblogic08
Context.SECURITY_PRINCIPAL=weblogic
这里面的key如Context.INITIAL_CONTEXT_FACTORY修改为Context.INITIAL_CONTEXT_FACTORY对应的值,比如Context.INITIAL_CONTEXT_FACTORY=xxxFactory,那么在属性文件里就写xxxFactory,而不是写Context.INITIAL_CONTEXT_FACTORY这个信息
感谢你的回复我把properties文件改成INITIAL_CONTEXT_FACTORY=weblogic.jndi.WLInitialContextFactory
PROVIDER_URL=t3://localhost:7001
SECURITY_CREDENTIALS=weblogic08
SECURITY_PRINCIPAL=weblogic还是不行啊。