paulwong

MyEclipse+WebSphere 通过 JNDI 连接 Sybase 简介

       很久不来这里写东西了,一是工作忙,还有就是我是个初学者也写不出什么东西。这几天因工作需要学习了一下 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.    点击 数据源

c8.gif

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.   游览器运行结果



 

posted on 2006-07-24 17:12 paulwong 阅读(2518) 评论(1)  编辑  收藏 所属分类: Websphere

Feedback

# re: MyEclipse+WebSphere 通过 JNDI 连接 Sybase 简介 2006-08-08 11:25 疑问

对webSphere的一些概念不太熟悉,比如单元、节点、服务、概要以及它们的关系?可否讲讲?  回复  更多评论   



只有注册用户登录后才能发表评论。


网站导航: