conn = getConnection(); // 这一步运行没问题
pstmt = conn.prepareStatement("select sum(balance) as total from accounts"); // 也没问题
ResultSet rs = pstmt.executeQuery(); // 运行到这一步出错以下是 getConnection()方法:
public Connection getConnection() throws Exception {
try {
Context ctx = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource)
ctx.lookup("LYJDB");
return ds.getConnection();
}
catch (Exception e) {
System.err.println("Could not locate datasource! Reason:");
e.printStackTrace();
throw e;
}
}
pstmt = conn.prepareStatement("select sum(balance) as total from accounts"); // 也没问题
ResultSet rs = pstmt.executeQuery(); // 运行到这一步出错以下是 getConnection()方法:
public Connection getConnection() throws Exception {
try {
Context ctx = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource)
ctx.lookup("LYJDB");
return ds.getConnection();
}
catch (Exception e) {
System.err.println("Could not locate datasource! Reason:");
e.printStackTrace();
throw e;
}
}
解决方案 »
- 用ejb3 写了一个WebService的例子,发布在jboss里报错
- 单点登陆怎么实现呀?
- hibernate中的Join的问题。
- 请学姐、学哥帮帮我,我的Tomcat怎么启动不了?
- 使用acegi和在action直接用代码来进行角色权限认证的比较
- 请求参数问题~!
- weblogic platform 出现 java.lang.OutOfMemoryError ???
- 公司要做协同办公管理平台,请教一下预警扫描模块都包含那些内容
- 如何给servelt传递一些自定义参数
- 请教如何通过smtp服务器的验证???
- 哪们兄弟给一份emf-sdo-runtime-2.0.0.zip包。官方下载一天没下来
- 为什么我的一对多的父类总是不能更新呢??
Connection Pools:
Name: LYJ Connection Pool
URL: jdbc:weblogic:oracle
Properties: user=system
server=lyj
Password: ********
Data Sources:
Name: LYJ Data Source
JNDI Name: LYJDB
Pool Name: LYJ Connection Poolweblogic-ejb-jar.xml 文件如下:
<?xml version="1.0"?><!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'><weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>Account</ejb-name>
<entity-descriptor>
<entity-cache>
<max-beans-in-cache>100</max-beans-in-cache>
</entity-cache>
</entity-descriptor>
<jndi-name>AccountHome</jndi-name>
<local-jndi-name>AccountLocalHome</local-jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar> AccountBean 里有如下代码:
ctx.lookup("LYJDB");谢谢大家帮忙!!
哦,上面 Connection Pools: 少了一项,如下:
Driver Classname: weblogic.jdbc.oci.xa.XADataSource
是weblogic8自带的??
我都是用oracle.jdbc.driver.OracleDriver
配置对不对啊?
<datasources>
<local-tx-datasource>
<jndi-name>OracleDS</jndi-name>
<connection-url>jdbc:oracle:thin:@127.0.0.1:1521:SAMPLE</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>system</user-name>
<password>manager</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
</local-tx-datasource>
</datasources>ejb-jar.xml如下
....
<entity >
<description><![CDATA[<!-- begin-user-doc --> You can insert your documentation for '<em><b>BmpbookBean</b></em>'.]]></description> <ejb-name>Bmpbook</ejb-name> <home>com.test.BmpbookHome</home>
<remote>com.test.Bmpbook</remote>
<local-home>com.test.BmpbookLocalHome</local-home>
<local>com.test.BmpbookLocal</local> <ejb-class>com.test.BmpbookBMP</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<resource-ref>
<res-ref-name>ds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</entity>
不知道为何???
------------------
URL: jdbc:weblogic:oracle
这样配置CONNECTION POOL,你测试过可以正常运行吗?
p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL, "t3://j2ee:7001");
System.out.println("写入属性完成!");
Context ctx = new InitialContext(p);// 最后一步抛出找不到"weblogic.jndi.WLInitialContextFactory"这个类,以前没出现这个问题.
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>Account</ejb-name>
<entity-descriptor>
<entity-cache>
<max-beans-in-cache>100</max-beans-in-cache>
</entity-cache>
</entity-descriptor>
<jndi-name>AccountHome</jndi-name>
<local-jndi-name>AccountLocalHome</local-jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>没有加入 DataSource 的 jndi 一项,会不会问题出在这?????
我没有使用过 weblogic8.1,不过想来也应该差不多
ctx.lookup("LYJDS");确实是寻找你在你当前的 weblogic 中是否有配置名字为 LYJDS 的 JNDI 节点。
至于如何新增一个 JNDI 节点,我建议你到 weblogic 的后台 console 里面去新建,就是打开 IE,键入 http://127.0.0.1:7001/console
找到 mydomain -> services -> JDBC -> Data Sources
点击 Configure a new JDBC Data Source... 来新建一个 JNDI 节点,手工改写 xml 文件当然也可以,但十分麻烦,建议不要用直接改写 XML 文件的做法。
至于新建以后,被新建的JNDI 的 XML 代码应该是出现在 :\bea\wlserver6.1\config\mydomain\config.xml 里面,和 weblogic-ejb-jar.xml 可能没什么关系吧呵呵以上是基于 weblogic6.1 我看过 weblogic7.1 的目录结构也差不多,不过 8.1 就不知道了,总之通过后台 console 去配置,谢谢
为什么bean已经连上数据源了,而且数据源和连接池都没问题,但执行SQL语句的时候,却说找不到表或视图呢, 但同样的SQL语句在 ORACLE 的 SQL PLUS 下却可以运行呢.
conn = getConnection() 无法确定原因
ystem.out.println("数据库已连接!");
pstmt = conn.prepareStatement("select sum(balance) as total from accounts");
ResultSet rs = pstmt.executeQuery(); // 出错,找不到表
System.out.println("SQL 语句执行成功!");
getConnection()代码如下:
public Connection getConnection() throws Exception
{
try {
Context ctx = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource)
ctx.lookup("LYJDS");
return ds.getConnection();
}
catch (Exception e) {
System.err.println("Could not locate datasource! Reason:");
e.printStackTrace();
throw e;
}
}
建议用 "select 1 from dual" 试试看
无论怎么说,在应用程序用oracle system用户总不好
解决的办法1,应用程序的表建立在正确的用户下
解决办法2,A用户要访问B用户的表,则先给A用户授权,然后在A用户下面建立同义词或者建立公共同义词。
---------------------------------
我是一只菜菜菜鸟。
*********************
社区是我家,繁荣靠大家
鄙视只索取,不付出的人
---------------------------------