Java的Web开发环境布置向来很烦琐还记得在做本科毕业设计时配置JBuilder+Weblogic+SQLk整合环境时的痛苦经历近来整合配置Eclipse+Tomcat+Oraclei环境又累了N小时这可不得不怪B/S结构的苦了开发者方便千万用户捨己为人精神以及各种工具版本纷杂带来的不便与不少不负责任网友的胡乱指引下面小弟把自己的成功经验向大家汇报希望有需要的友人能少走弯路具体步骤如下
安装Java开发环境Eclipse安装Oraclei数据库
首先安装SUN的JDK以上版本的Java基础开发环境配置Java系统变量(这个太基础不具体展开了)接着下载解压安装Eclipse开发环境根据个人需要安装语言包MyEclipse等插件扩充功能(也可以先不安装)
安装Oraclei数据库创建测试数据库NBZJU与DBA:LUHAO/建立表空间LUHAO和测试表USER_INF其中USER_INF表具有USER_IDUSER_NAMEUSER_TEL字段属性并添如若干测试记录
安装Tomcat及其插件
下载并解压Tomcat启动插件tomcatPluginVzip将其下目录文件拷入eclipse\plugins目录下(这步若成功执行eclipse运行后将发现多了Tomcat菜单项及其启动停止重启等快捷按钮若看不到可能通过删除eclipse\configuration目录下除configini外所有文件再重启eclipse来解决)
下载Tomcat标准程序apachetomcatzip和admin控制台程序apachetomcatadminzip(将后者解压入前者的解压目录下可以获得登陆admin图形管理界面的功能这将方便后面的数据源配置不用直接在serverxml中自己输入参数即通过图形界面配置生成相应的标准XML参数否则手动输入参考来的配置容易出错因为不同版本tomcat的XML标记语法解析不同例如版的参数放入版是无效的因此强烈建议用图形界面配置数据源!)
配置系统变量TOMCAT_HOME其值为关联到apachetomcat目录的路径打开apachetomcat\conf\tomcatusersxml文件在<tomcatusers></tomcatusers>标记元素中加入<user username=luhao password= roles=adminmanager/>即加入角色身份为admin和manager的管理员luhao我们之后需要以manager角色上传Web应用程序和以admin角色配置数据员再打开apachetomcat\conf目录下serverxml文件将<Connector元素后port=的属性改为port=(注意由于oracle已占用了Tomcat默认的访问端口必须更改其它未被占用的空闲端口此处假设为)
接下来运行eclipse程序配置Tomcat属性打开菜单窗口/首选项打开Java/已安装的JRE选项将运行环境参数位置定位于JDK目录下的JRE目录打开Tomcat选项Tomcat Version选择xTomcat Home定位到apachetomcat目录其余默认关联即可打开Tomcat/JVM Settings和Tomcat/Source Path选项JRE选择刚配置的已安装的JREAutomatcially compute source path打勾再打开Tomcat Manager App选项url输入username和password填Tomcat中新加入的luhao和(这步可以保证将Web应用程序发布到Tomcat项目Reload也不会出错)
获取Oraclei相应的JDBC驱动程序配置Data Sources和Context
拷贝Oraclei安装目录下ora/jdbc/lib/classesjar驱动文件到Tomcat目录下common/lib公共文件夹下
然后在eclipse中启动Tomcat(点击那个猫的图标即可)以luhao/身份登陆后新建数据源其中JNDI Name:jdbc/Oracle(此数据源JNDI名字可以随意取但不可重复)Data Source URL:@localhost::NBZJU(为Oracle访问端口NBZJU为要访问的数据库名称)JDBC Driver Class:oraclejdbcdriverOracleDriver(可打开classesjar文件查看到相应的路径否则驱动有误)Username:luhao和Password:(填NBZJU数据库有访问权限的用户即可)其余选项默认即可数据源保存及递交后conf目录下serverxml文件的全局命名资源GlobalNamingResources元素内将多一项Resource属性
<Resource
name=jdbc/Oracle
type=javaxsqlDataSource
password=
driverClassName=oraclejdbcdriverOracleDriver
maxIdle=
maxWait=
username=luhao
url=@localhost::NBZJU
maxActive=/>
数据源配置完成后还须配置相关的上下文信息context来使程序获得JDNI初始化引用从而定位数据源由于之前定义的是全局资源我们可在apachetomcat\conf\contextxml文件中的Context元素中加入关联属性
<ResourceLink global=jdbc/Oracle name=jdbc/Oracle type=javaxsqlDataSource/>
创建测试Web程序
运行eclipse新建一个Tomcat项目到任意的当前工作空间此处项目取名quickstart当项目一经创建我们就可以发现apachetomcat\conf目录下serverxml文件的Host元素内自动增加了以下属性内容(用来关联发布Web应用程序的工作目录)
<Host
appBase=webapps
name=localhost><Context path=/quickstart reloadable=true docBase=E:\luhao\workspace\quickstart workDir=E:\luhao\workspace\quickstart\work />
</Host>
新建JSP测试页面indexjsp到quickstart工程目录下(JSP页面编辑需要有支持Web开发功能的eclipse插件支持如MyEclipseWTP等插件)代码如下
<%@ page contentType=text/html; charset=gb %>
<%@ page import=javaxnaming* %>
<%@ page import=javaxsql* %>
<%@ page import=javasql* %>
<html><head><title>Oracle JDBC Test</title></head>
<body>
<%
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
ResultSetMetaData md=null;
try{
Context initCtx=new InitialContext()
//获得JNDI初始化上下文信息即获取目录上下文的引用
DataSource ds=(DataSource)initCtxlookup(java:comp/env/jdbc/Oracle)
//定位数据源jdbc/Oracle
if(ds!=null){
outprintln(已经获得DataSource)
outprintln(dstoString())
conn=dsgetConnection()
if(conn!=null){
outprintln(create connection sucess!)
stmt=conncreateStatement()
outprintln(createStatement Success!)
rs=stmtexecuteQuery(select * from LUHAOUSER_INF)
md=rsgetMetaData()
outprintln(<table border=>)
outprintln(<tr>)
for(int i=;i<mdgetColumnCount()i++){
outprintln(<td>+mdgetColumnName(i+)+</td>)
}
while(rsnext()){
outprintln(<tr>)
outprintln(<td>+rsgetString()+</td>)
outprintln(<td>+rsgetString()+</td>)
outprintln(<td>+rsgetString()+</td>)
outprintln(<td>)
}
outprintln(</table>)
connclose()
}
}
}catch(Exception e){
outprintln(etoString())
Systemoutprintln(etoString())
}
%>
</body>
</html>
启动数据库运行测试程序
运行测试页面前必须先启动后台数据库办法是打开Oracle SQL Plus用DBA身份连接入NBZJU数据库conn luhao/ as sysdba再用命令startup完成启动数据库(shutdown可以关闭数据库)
保存工程启动Tomcat打开页面若能看到各种连接成功的消息及完整的USER_INF测试表内容那么表明整个Web测试程序运行成功了!
总结
实际的整合配置过程除上述全局化配置方法可行外还可以采用局部化配置方法(某些版本Tomcat可能行不通)局部化配置方法较全局化配置方法区别仅在于将数据源jdbc/Oracle的Resource属性内容加入工程所在quickstart目录下的METAINF\contextxml文件的Context元素中去而不用改变Tomcat目录的conf子目录下的serverxml和contextxml文件