我试着运行 银行账户示例 的例子,相信大家也都作过。 配置工作已经完毕!!!工具是---JB7+weblogic7+Oracle8i
文件有:
Account.java AccountHome.java (local) AccountRemote.java AccountRemoteHome.java (remote)AccountPK.java (pk类)AccountException (自定义异常)AccountBean.java (Bean类)这些都已经写好,打包并且 deploy完毕。
我也写好了Client.java,但是运行出错:
javax.ejb.CreateException: javax.naming.NameNotFoundException: Unable to resolve 'app/ejb/AccountMoudle.jar#Account/comp/env/jdbc/Oracle' Resolved: 'app/ejb/AccountMoudle.jar#Account/comp/env' Unresolved:'jdbc' ; remaining name 'jdbc/Oracle'我的AccountBean.java 中的 查询部分是:
public Connection getConnection() throws Exception {
try {
Context ctx = new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/Oracle");
return ds.getConnection();
}
catch (Exception e) {
System.err.println("Could not locate datasource! Reason:");
e.printStackTrace();
throw e;
}
}
(Oracle是我在 weblogic 的console中配置的 JNDI Name)
我想可能是(Client.java类中的) :
Properties h = System.getProperties();
h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL,"t3://localhost:7001");
Context ctx = new InitialContext(h);
Object obj = ctx.lookup("AccountRemote");
AccountRemoteHome Home = (AccountRemoteHome)PortableRemoteObject.narrow(obj,AccountRemoteHome.class);问题,但我把 Object obj = ctx.lookup("XXX"); 中 XXX 换成什么都不行,谁帮帮我阿
文件有:
Account.java AccountHome.java (local) AccountRemote.java AccountRemoteHome.java (remote)AccountPK.java (pk类)AccountException (自定义异常)AccountBean.java (Bean类)这些都已经写好,打包并且 deploy完毕。
我也写好了Client.java,但是运行出错:
javax.ejb.CreateException: javax.naming.NameNotFoundException: Unable to resolve 'app/ejb/AccountMoudle.jar#Account/comp/env/jdbc/Oracle' Resolved: 'app/ejb/AccountMoudle.jar#Account/comp/env' Unresolved:'jdbc' ; remaining name 'jdbc/Oracle'我的AccountBean.java 中的 查询部分是:
public Connection getConnection() throws Exception {
try {
Context ctx = new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/Oracle");
return ds.getConnection();
}
catch (Exception e) {
System.err.println("Could not locate datasource! Reason:");
e.printStackTrace();
throw e;
}
}
(Oracle是我在 weblogic 的console中配置的 JNDI Name)
我想可能是(Client.java类中的) :
Properties h = System.getProperties();
h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL,"t3://localhost:7001");
Context ctx = new InitialContext(h);
Object obj = ctx.lookup("AccountRemote");
AccountRemoteHome Home = (AccountRemoteHome)PortableRemoteObject.narrow(obj,AccountRemoteHome.class);问题,但我把 Object obj = ctx.lookup("XXX"); 中 XXX 换成什么都不行,谁帮帮我阿
解决方案 »
- 求助!!!!!!!!!!!!!!!!!!!!!
- 关于对象clone()疑问,为什么要在子类中覆写该方法?
- 时间格式问题
- modle为 false的 JDialog 显示不出来包含的label
- 读取文件列表如果太多了怎么办?
- 请问DriverManager.getConnection(jdbc:odbc:数据源","sa","");
- window.close()的问题,请各位高手相助
- 怎样用ASCII码? String+ASCII 0x01+String,形成 byte[]
- 如何设置JButton的快捷键???
- 怎么用POI Word插入图片
- QueryDataSet能和JdbTree结合起来吗?急!
- 如何通过菜单切换同一对象下jpanel。有何方法,如果有代码示范,就更好了
你在weblogic中 配置的Datasource的 jndi名字是Oracle
那么就 DataSource ds=(DataSource)ctx.lookup("Oracle")还有 察看一下
看看在weblogic-ejb-jar.xml文件中,这个bean的JNDI名到底是什么……,如下:
weblogic-ejb-jar.xml
<weblogic-enterprise-bean>
<ejb-name>Account</ejb-name>
<jndi-name>Account</jndi-name>
</weblogic-enterprise-bean>这里的jndi名字 ,我想应该是Accountgood luck
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>Account</ejb-name>
<jndi-name>AccountRemote</jndi-name>
<local-jndi-name>Account</local-jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>我改成 DataSource ds=(DataSource)ctx.lookup("Oracle")
然后:
Object obj = ctx.lookup("AccountRemote");
AccountRemoteHome Home = (AccountRemoteHome)PortableRemoteObject.narrow(obj,AccountRemoteHome.class);
报错是这样的:
javax.ejb.CreateException: javax.naming.NameNotFoundException: Unable to resolve 'Oracle' Resolved: '' Unresolved:'Oracle' ; remaining name 'Oracle再帮我看看吧,我现在真是摸不着头脑,实在无法解决了。
Remote jndi是 AccountRemote
local jndi的是Account看一下你的weblogic 里 DataSource的jndi名字是否为Oracle
如果用CMP2.0的化 要用Weblogic 里的 TxDataSource
Connection Pool是否正确了
配置DataSource 要用到Connection Pool的JNDI,是否正确,
是否apply 到server中了
启动weblogic的时候看一下你的连接池是否有包错,或者DataSource是否包错
CMP2.0 而我用的是 TxDataSource 。
配置Connection Pool的时候没有 JNDI 这项。
启动weblogic 时开始报连接池的错,但后来我在jb里面把oracle的jdbc驱动引入,就正常了。
我的问题是在 TxDataSource 上面吗?
如果连接池没对, TxDataSource 也不会对,所以也就lookup不到你的datasource
OraclePool,这个肯定对的。要不我的weblogic 也启动不了。
你在weblogic中 配置的Datasource的 jndi名字是Oracle
那么就 DataSource ds=(DataSource)ctx.lookup("Oracle")还有 察看一下
看看在weblogic-ejb-jar.xml文件中,这个bean的JNDI名到底是什么……,如下:
weblogic-ejb-jar.xml
<weblogic-enterprise-bean>
<ejb-name>Account</ejb-name>
<jndi-name>Account</jndi-name>
</weblogic-enterprise-bean>这里的jndi名字 ,我想应该是Accountgood luck