很久不来这里写东西了,一是工作忙,还有就是我是个初学者也写不出什么东西。这几天因工作需要学习了一下
WebSphere5.1,
在网上找了些资料终于了解了如何通过
JNDI
连接
Sybase
数据库。贴上来一个是怕自己以后忘了,另外就是希望能帮助像我一样苦苦探索的初学者。
该文参考了
:
1. IBM
WebSphere Application Server V5.1 System Management and Configuration - WebSphere
Handbook Series
2. moyunhe
在
http://www.matrix.org.cn
发表的
WebSphere
中流行数据库连接池的配置
(Oracle
、
SQL Server
、
Sybase
、
MySQL),
该文地址
: http://www.matrix.org.cn/thread.shtml?topicId=30665&forumId=40
3.
MyEclipse
网站的一篇文档,该文地址
: http://www.myeclipseide.com/Articles/WebSphere5.1LogConfiguration/WAS5.1LogConfiguration.html
软件环境
:eclipse V3.1.1,
MyEclipse V4.1.1 Build id: 20060309-4.1.1-GA, Sybase ASE 12.5
字符集
: iso_1, WebShpere 5.1
中文版
A.
将
WebSphere5.1
的
log
重定向至
MyEclipse
控制台
(
摘自
MyEclipse
帮助
”Configuring WebSphere 5.1 Logging for MyEclipse”.
所以
WebSphere
是英文的
)
1.
打开指定
Server
的
Log
设置
2.
选择
JVM Logs
3.
设置
Output
和
Error Logs
到控制台
(Console),
之后点击确认
(OK)
按钮
4.
点击
Save
5.
点击
Save
按钮
B.
MyEclipse
中设置
WebSphere5.1
属性
1.
按下图请根据自己的具体环境设置
2.
Jdk
设置必须指定
WebSphere
自带
jdk
3.
如果安装了
MQ
需要以下设置,否则会在
MyEclipse
启动时由于找不到
bipmainw110.dll
而导致
MQ
启动失败
4.
这些设置好之后就可以通过下图所示来启动
WebSphere,
启动日志应该显示在
eclipse
的控制台中
C.
接下来设置
Sybase JDBC
和
JNDI
1.
点击
“
环境
->
管理
WebSphere
变量
“(
下边
WebSphere
是自己公司的,所以是中文的
)
,然后点击
”
新建
”
按钮
2.
点击右边的
” SYBASE_JDBC_DRIVER_PATH ” (
通常
Sybase
数据库的
JDBC
连接程序为
jconn2.jar
,根据
Sybase
版本不同可能存放于
\sybase\jConnect-5_5\classes\
或是存放于目录
\sybase\Sybase Central 3.2\java\
下
,
将具体的
jconn2.jar
所在路径指定给他们即可。
)
,点击
”
确认
”
跳转页面后点击链接
”
保存
”
,再次跳转页面后点击按钮
”
保存
”(
注意
:
不是上边的链接,是下边的
”
保存
”
按钮,以后保存步骤简写为保存
)
3.
之后点击
“
环境
->
更新
Web
服务器插件
“
,再点击
”
确定
”(
当服务器、群集、
HTTP
传输或虚拟主机别名配置更改时,必须更新
Web
服务器插件,这个后面也不再多说,反正服务器修改东西后没效果在这里更新一下,还不行重起
web
服务,再不行重起机器,最后还不行肯定是某个地方配置错了
,google
上查查资料,或者看看
” WebSphere Application Server V5.1 System Management &
Configuration”
这本书。这本书英文版可以去
emule
上下载下来
,
书店里有卖中文的,网上似乎没有,我是在书店里发现有这本书才去
emule
下的
)
。
4.
点击
“
资源
-> JDBC
提供程序
“
,在打开的页面中点击
”
新建
”(
图片中的
”Sybase JDBC Driver”
是我已经建好的,不用理会
)
5.
选择
”Sybase JDBC Driver”
,确认后页面跳转。
6.
可以在这里更改名称、描述,其它默认,然后再确定,最后保存。这时
Sybase JDBC
已设置好。
7.
点击刚才建好的
Sybase JDBC
名称
8.
点击
”
数据源
”
9.
点击
”
新建
”(
下边图片中的
hq
是我已建好的不必理会
,
您的页面应该是什么都没有,要有东西说明见到鬼了
)
10.
输入
”
名称
”
、
”JNDI
名
”
后点击
”
应用
”
11.
点击下方的
”
定制属性
”
,在打开的页面中按下图设置
JDBC
链接属性,没有的需要新建该属性。
”
连接池
”
需要根据自己实际情况设置。属性和连接池中的各项可以参考
” WebSphere Application Server V5.1 System Management &
Configuration”
这本书
12.
保存后更新插件,之后需要重起
WebSphere
才生效。之后我们可以测试刚才的设置是否成功,测试成功表示
JNDI
已正确设置,否则可能数据库没有启动或者有些地方没有设置正确。
D.
在
MyEclipse
中测试刚才设置的
JNDI
。
1.
新建
” Enterprise Application Project ”
2.
下一步后敲入项目名称,选择
”J2EE 1.3”(
必须选择该项
,
否则生成的
application.xml
与
web.xml
格式是
J2EE1.4
的,
WebSphere5.1
并不支持该格式,发布应用时会出错导致无法发布
)
。
”Define Ejb Project Modules”
就不用选了,我们没用
ejb
3.
在
“ Create Web Project Module ”
上打勾
4.
点击完成
5.
在
test.pool
包中建类
TestPool
,在
WebRoot
下建
jsp: testjndi.jsp,
如下图
:
6.
代码
test
表结构
:
CREATE
TABLE
dbo.test
(
name
varchar
(
60
)
NULL
)
TestPool
类内容
:
/*该代码借用了
moyunhe文章中的TestPool类,详细内容请见该文参考*/
/*
* 创建日期 2005-11-5
*
* 更改所生成文件模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
package
test.pool;
import
java.sql.Connection;
import
java.sql.ResultSet;
import
java.sql.SQLException;
import
java.sql.Statement;
import
javax.naming.Context;
import
javax.naming.InitialContext;
import
javax.naming.NamingException;
import
javax.sql.DataSource;
/**
*
@author
moyunhe
*
* 更改所生成类型注释的模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
public
class
TestPool {
private
static
Connection getConnection(String strConnPoolJndi)
throws
NamingException, SQLException {
Context ctx
=
null
;
ctx
=
new
InitialContext();
DataSource ds
=
(DataSource)ctx.lookup(strConnPoolJndi);
Connection conn
=
ds.getConnection();
return
conn;
}
public
static
String getDBData(String strConnPoolJndi, String sql) {
String strReturn
=
""
;
Connection conn
=
null
;
Statement st
=
null
;
ResultSet rs
=
null
;
try
{
conn
=
getConnection(strConnPoolJndi);
st
=
conn.createStatement();
st.executeUpdate(
"
delete test
"
);
st.executeUpdate(
"
insert test(name) values('
"
+
sql
+
"
')
"
);
rs
=
st.executeQuery(
"
select name from test
"
);
if
(rs.next()) {
strReturn
=
rs.getString(
1
);
}
}
catch
(Exception e) {
e.printStackTrace();
strReturn
=
e.getMessage();
}
finally
{
try
{
if
(st
!=
null
) {
st.close();
st
=
null
;
}
if
(rs
!=
null
) {
rs.close();
rs
=
null
;
}
if
(conn
!=
null
) {
conn.close();
conn
=
null
;
}
}
catch
(SQLException e) {
e.printStackTrace();
}
}
return
strReturn;
}
}
testjndi.jsp
文件内容
:
<%
@ page language
=
"
java
"
contentType
=
"
text/html;charset=utf-8
"
pageEncoding
=
"
utf-8
"
%>
<%
@page import
=
"
java.util.*
"
%>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html
>
<
head
>
<
title
>
My JSP 'MyJsp.jsp' starting page
</
title
>
</
head
>
<
body
>
世界杯.
<
br
>
<%
out.println(
"
SYBASE_JNDI:
"
+
test.pool.TestPool.getDBData(
"
jdbc/hq
"
,
"
2006年德意志世界杯
"
));
%>
</
body
>
</
html
>
7.
游览器运行结果