实体bean怎么连接sql server数据库啊??

jeah 2004-04-02 05:39:49
在weblogic中已经配好数据库连接池
Name: EJBDataSource
JNDI Name: EJBDataSource
Pool Name: MSPool(已经在连接池里配好)

然后在getconnection里连接数据库:
Context ctx=new InitialContext();
javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup
("EJBDataSource");

return ds.getConnection();

出错,错误是:
Could not get datasource!
javax.naming.NameNotFoundException: While trying to look up comp/env/jdbc/EJBDataSource in /app/ejb/Account.jar#Account.; remaining name 'comp/env/jdbc/EJBDataSource'

实在不知道怎么搞,请大家指点迷津,非常感谢!
...全文
91 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
goderic 2004-04-04
  • 打赏
  • 举报
回复
数据源改成系统DSN
,不要用用户DSN,也许可以,记得我有次就是这样,另外SQL SERVER 安装不正确也可能出错
jeah 2004-04-04
  • 打赏
  • 举报
回复
To chely3yang(江上翁):
以上的回答非常感谢!不过问题还是没有解决。我看我们还是QQ聊吧。我估计应该是用jbuilder9做例子的过程出错,希望你能教我一下用jbuilder9做实例的步骤,我真的是快晕了。。。(分数不是问题,我还有别的帖子没结,到时候。。。呵呵)
如果方便的话我们用QQ聊。

我的QQ:3555282
chely3yang 2004-04-04
  • 打赏
  • 举报
回复
<resource-ref>
<res-ref-name>jdbc/EJBDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

可以没有,我的也没有。
用weblogic自带的jdbc连连看,比odbc-jdbc也好些。

抄一段:
4.在左边的目录树中选中Services->JDBC->Connection Pools,单击右侧的Configure a new JDBC Connection Pool.,输入以下信息:
Configuration->General页:
Name = SQL Server Connection Pool
URL = jdbc:weblogic:mssqlserver4:northwind@localhost
Driver classname = weblogic.jdbc.mssqlserver4.Driver
Properties : user = sa
Password = “” <- sa的密码
单击Create建立连接池。
Targets->Server页:
将myserver(服务器名称)移至右侧的列表中,但击单击Apply
5.在左边的目录树中选中Services->JDBC->Data Sources(或者TXData Sources),单击右侧的Configure a new JDBC Connection Pool.,输入以下信息:
Configuration->General页:
Name = SQLServer Tx Data Source
JNDI Name = SQLServer
Pool Name = SQL Server Connection Pool
选中Emulate Two-Phase Commit for non-XA Driver和Row Prefetch Enabled
单击Create建立数据源。
jeah 2004-04-04
  • 打赏
  • 举报
回复
数据源是系统DSN ,SQL SERVER 没问题的
我想问题应该在部署文件那地方,它没有以下这一段:
<resource-ref>
<res-ref-name>jdbc/EJBDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

大家有没有什么高招啊,帮帮忙。。。

dalang81 2004-04-03
  • 打赏
  • 举报
回复
package TOM.DATA;
import java.sql.*;

public class DataBean
{
public Connection con;
public ResultSet contact;
public DataBean()
{
String DATA_DRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String DB_SOURCER="jdbc:microsoft:sqlserver://222.18.144.171:1433;DatabaseName=CRM";
String USER="sa";
String PWD="sa";
try
{
Class.forName(DATA_DRIVER);
con=DriverManager.getConnection(DB_SOURCER,USER,PWD);
}
catch(Exception e)
{
e.printStackTrace();
}
}

//查询数据库
public ResultSet getContact()
{
try
{
Statement stm=con.createStatement();
contact=stm.executeQuery("secect 姓名,性别,年龄 from 用户信息");
return contact;
}
catch(Exception e)
{
return null;
}

}
};

我的这个bean有什么问题阿?为什么调用的时候,老是说我的class(cannot access TMP.DATA.DataBean
bad class file: E:\SER\WEB-INF\classes\TMP\DATA\DataBean.class)
救救我阿~
ligun777 2004-04-03
  • 打赏
  • 举报
回复
给大家推荐个好网站
http://www.djtz.net/get.asp?get=9662
jeah 2004-04-03
  • 打赏
  • 举报
回复
To chely3yang:
找不到你说的“Monitor all Active Pools... ”,但是 Pool State:running,不知道你说的“激活态”是否就是running状态?同时测试(Test Pool)也成功(Connection successful on: myserver)。数据库连接池的名称也没抄错。

我想问一下部署文件ejb-jar.xml中要不要加上以下这一段:
<resource-ref>
<res-ref-name>jdbc/EJBDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
但是我用的是jbuilder9,这个文件改不了,它的ejb-jar.xml里面没有以上这段内容。。。

我快晕了。。。
chely3yang 2004-04-03
  • 打赏
  • 举报
回复
更正一下第2条:
2、配置数据源时数据库连接池的名称抄错了。
chely3yang 2004-04-03
  • 打赏
  • 举报
回复
可能的原因:
1、数据库连接池配置了,但并不处于激活态。
用console看看 monitoring,点击“Monitor all Active Pools... ”看看。
2、配置数据源时数据库连接的JNDI名称抄错了。
jeah 2004-04-02
  • 打赏
  • 举报
回复
To chely3yang和shine333:
分别按照你们俩的方法试了,还是不行啊,错误依然:Could not get datasource!
到底是怎么回事啊,我到底那里做错了啊。。。

书上用的是:
javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup
("comp/env/jdbc/EJBDataSource");

为什么要用'comp/env/jdbc/。。。'这个东西啊

很多不懂,。。。
shine333 2004-04-02
  • 打赏
  • 举报
回复
这样试试看
Properties p=new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL,"t3://localhost:7001");
Context ctx=new InitialContext(p);
xupan007 2004-04-02
  • 打赏
  • 举报
回复
嗯,up
chely3yang 2004-04-02
  • 打赏
  • 举报
回复
如果你成功了,把分都给我吧。

把你的
javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup
("EJBDataSource");

中的EJBDataSource改为:"t3://localhost:7001/EJBDataSource" 就行了。
如果你不是在本机运行,就请把localhost换成weblogic服务器的IP地址。
jeah 2004-04-02
  • 打赏
  • 举报
回复
连接池已经配好了,已经测试连接成功


“数据库驱动的classpath设好了吗?”我用的是jdbc-odbc桥连接数据库,没有用别的驱动程序。。。

盼赐教!
xfanghua 2004-04-02
  • 打赏
  • 举报
回复
连接池配好了吗?
数据库驱动的classpath设好了吗?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧