如何在javaBean(not ejb)中调用weblogic中设好的datasource连database(21分)

  • 主题发起人 主题发起人 zhang12321
  • 开始时间 开始时间
Z

zhang12321

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在javaBean(not ejb)中调用weblogic中设好的datasource连database
??
谢谢!!!
 
渴望ing渴望ing
 
渴望ing渴望ing
渴望ing渴望ing
 
有人说是这样:
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL,"t3://localhost:7001");

try
{
Context ctx = new InitialContext(ht);
DataSource ds = (DataSource)ctx.lookup("SQLServer");
Connection con = ds.getConnection("system","12345678");//此处是WebLogic7
的域用户和密码
但是我不可能在javabean中写入“此处是WebLogic7
的域用户和密码”
有人说是有properties
但怎么去写呢???
我试着这样作:
private Context getInitialContext() throws Exception {
String url = "t3://localhost:7001";
String user = null;
String password = null;
Properties properties = null;
try {
properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, url);
if (user != null) {
properties.put(Context.SECURITY_PRINCIPAL, user);
properties.put(Context.SECURITY_CREDENTIALS, password == null ? "" : password);
}
return new InitialContext(properties);
}
catch(Exception e) {
System.out.println("Unable to connect to WebLogic server at " + url);
System.out.println("Please make sure that the server is running.");
throw e;
}
}
。。。
另一个function为:
。。。。。。。
。。。
try{
Context ctx = getInitialContext();
DataSource ds = (DataSource)ctx.lookup("MyDataSource");
Connection con = ds.getConnection(ctx.SECURITY_PRINCIPAL,ctx.SECURITY_CREDENTIALS);
PreparedStatement pstmt=con.prepareStatement("select TIME_DISC_ID,TIME_DISC_NAME from RATE_TIME_POLICY where RATE_ID=?");
。。。。
结果f9为:
Starting WebLogic Server ....
<2002-10-2 下午06时16分10秒> <Emergency> <Security> <Authen
tication failure - reenter password to boot weblogic server:>

<2002-10-2 下午06时16分10秒> <Emergency> <Security> <Authen
tication failure - reenter password to boot weblogic server:>

<2002-10-2 下午06时16分10秒> <Emergency> <Server> <Unable to initialize the server: 'Fatal initialization exception
Throwable: java.lang.SecurityException: Authen
tication for user system denied
java.lang.SecurityException: Authen
tication for user system denied
at weblogic.security.SecurityService.initializeSuid(SecurityService.java:375)
at weblogic.security.SecurityService.initialize(SecurityService.java:118)
at weblogic.t3.srvr.T3Srvr.initialize(T3Srvr.java:385)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:197)
at weblogic.Server.main(Server.java:35)
'>
***************************************************************************
The WebLogic Server did not start up properly.
Exception raised: java.lang.SecurityException: Authen
tication for user system denied
java.lang.SecurityException: Authen
tication for user system denied
at weblogic.security.SecurityService.initializeSuid(SecurityService.java:375)
at weblogic.security.SecurityService.initialize(SecurityService.java:118)
at weblogic.t3.srvr.T3Srvr.initialize(T3Srvr.java:385)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:197)
at weblogic.Server.main(Server.java:35)
Reason: Fatal initialization exception
***************************************************************************
请教我该 怎么办呢?????
谢谢!!!!
 
TTTTTTTTTTTTTTTTTTTTTTTTTTT
 
TTTT
怎么没有一个人知道啊??????
 
1.在EJB服务器上建立数据源,我用的服务器是weblogic7,配置如下:
Connection Pools
Name:MyJDBC
URL:jdbc:odbc:Northwind //Northwind是ODBC数据源名,我是连接到SQL server 7
的Northwind数据库,你只需要改为连接到ORACLE的数据
库就行了
Driver:sun.jdbc.odbc.JdbcOdbcDriver
Properties:(user=sa,password=) //连接数据库的账号、密码
Tx Data Sources
Name:MyJDBC
JNDI Name:MyJDBC
Pool Name:MyJDBC
2.jsp代码如下
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="java.util.*"%>
<html>
<body>
<%
Context initialContext=new InitialContext();
DataSource sds=(DataSource)initialContext.lookup("MyJDBC");
Connection connection=sds.getConnection("system","masterkey");
//访问EJB服务器的账号、密码
Statement stmt=connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from employees";
ResultSet rs=stmt.executeQuery(sql);
<table border="1">
<%while(rs.next()) {%>
<tr><td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><%=rs.getString(4)%></td>
<td><%=rs.getString(5)%></td></tr>
<%}%>
</table>
<%out.print("數據庫操作成功,恭喜你!");%>
<%rs.close();
stmt.close();
connection.close();
%>
</body>
</html>
 
1,首先context前properties的用法已经过时,ejb2+标准不需要这样。
2,你的设计思路有问题,你应该使用使用一个不需要认证的sessionbean作为入口,
通过它,进行所有的访问
3,不能判断你这个错误的原由。好像是没有启动起来,这个应该不是问题的。
除非你非法入侵,哈哈哈:)
 
Connection con = ds.getConnection("system","12345678");//此处是WebLogic7的域用户和密码
通过这个不能连上吗?你要动态设定Weblogic 的用户密码?
 
我听说这个还是要放在容器中,也就是这个javabean要被servlet/jsp调用才行.
唉,我也在找类似答案呢,不过暂时是放在Servlet(AxisServlet)中执行,所以不
急着要答案,我用的Tomcat4.1.12,用不起weblogic.你有答案就通知俺一声,多谢
 
我想请问一下,要让WEBLOGIC支持HTC是否是要作什么特别设置才行?
 
just setup htc type in MIME-MAPPING section of web.xml.
user on tomcat4112, you can use sf.net poolman to manage your db connections.
 
1、设置properties;
2、取得Context;
3、用JDNI取得home;
4、取得Remote;
5、DO
 
不好意思,我看错了,以为你是要调ejb
 
以下以连接Sql Server2000中的pubs数据库为例,所以先从www.microsoft.com下载sql server2000 jdbc驱动
1:建立连接池
启动Web Logic Console,选择“Services/JDBC/Connection Pools”,然后选择“Confirure a new JDBC Connection poos...”,在“name”编辑框中输入连接池的名称,比如“pubsPool”,然后在“url”编辑框中输入连接数据库的url,由于是连接sqlserver2000的pubs数据库,因此输入“jdbc:microsoft:sqlserver://数据库所在机器的IP地址:1433;databaseName=Pubs;User=sa;Password=”,在“Driver Classname”编辑框中输入数据库的驱动名称“com.microsoft.jdbc.sqlserver.SQLServerDriver”,输入完后点击“Create”按钮,然后选择“Targets”页面,选择一个有效的服务名。
另外可以在“Connections”页面中设置连接池的属性,“Initial Capacity”代表初始连接池的容量,“Maximum Capacity”代表最大的连接池容量,“Capacity Increment”表示当连接池中的容量用完后,如果连接池中的容量小于最大的连接池容量,那么WebLogic将建立的连接数目。
2:建立数据源
在Web Logic Console中,选择“Services/JDBC/Data Sources”,然后选择“Configure a new JDBC Data Source...”,在“name”编辑框中输入数据源的名称,如“pubs”,在“JNDI Name”编辑框中输入JNDI的名称,当在程序中查找该数据源中要用到,因此我们输入“pubsDataSource”,在“Pool Name”中输入刚才建立的连接池的名称“pubsPool”,最后点击“Create”按钮,接下来选择“Targets”页面,选择一个有效的服务名。
3:使用连接池中的连接
<%@ page contentType="text/html;
charset=gb2312" %>
<%@ page import="javax.naming.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%
Context ctx = new InitialContext();
DataSource ds = null;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
{
ds = (DataSource)ctx.lookup("bookshopDataSource");
}
catch (NamingException ex)
{
out.println("NamingException");
}

try
{
conn = ds.getConnection();
}
catch (SQLException ex)
{
out.println(ex.toString());
}
if (conn != null)
{
try
{
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM titles");
while (rs.next())
{
out.println(rs.getString("title") + "<BR>");
}
}
catch (SQLException ex)
{
out.println("sqlexception");
}
finally
{
if (rs != null) rs.close();
if (stmt != null) stmt.close();
conn.close();
}
}
%>
有一点必须注意,就是在用完数据库连接后必须关闭,否则连接池的数据库连接会用完。
 
后退
顶部