说明: 此节针对 ejb 开发初学者,主要是手动配置一个最基本的基于文本开发的环境,让初学者从头开始编写各类程序和配置文件,
以更清楚的了解 EJB 开发和部署的步聚与原理。这是作者在学习 EJB 开发时的一个总结,欢迎指正。作者联系地址址: josserchai@yahoo.com
一、需求软件列表及下载地址
1、 Sun Java SDK ,我们采用的版本为: j2sdk1.4.1_01 ,下载地址为: http://www.sun.com/download/ ,下载后的文件名为:
j2sdk-1_4_1_01-windows-i586.exe 2、 JBOSS ,一个免费的 EJB 容器。我们采用版本为: jboss-3.2.1_tomcat-4.1.24 ,
这是一个内部己集成 Tomcat 的 EJB 容器。下载地址为: http://www.jboss.org/ ,下载后的文件名为:
jboss-3.2.1_tomcat-4.1.24.zip 。 3、 注意:作者只保证在以上软件版本下以下步聚成功,对于其它的版本也应相同,
但作者没有求证。以下步聚请严格按照执行。
二、安装所需软件
1、 安装 SDK 到 C:/j2sdk1.4.1_01 ;方法为:双击执行下载的 j2sdk-1_4_1_01-windows-i586.exe 文件,选择安装目录为
C:/j2sdk1.4.1_01 ,其它默认即可。
2、 安装 JBOSS ;方法为:将下载的 jboss-3.2.1_tomcat-4.1.24.zip 文件解压到任意一个目录,解压后会在此目录中产生
一个 jboss-3.2.1_tomcat-4.1.24 文件夹,在此文件夹下有一系列的文件和文件夹。然后在 C 盘根目录下建一个 JBOSS 目录,
并将刚才解压后 jboss-3.2.1_tomcat-4.1.24 文件夹下的一系列文件和文件夹全都拷贝到 C : /JBOSS 目录下。即将 JBOSS
安装到了 C:/JBOSS 目录中。
3、 以上两个步聚进行后,文件夹如下图所示:
三、配置运行环境及测试程序目录
一、设置环境变量
1、 设置 JAVA_HOME 系统变量:在 win2k 下方法为,在桌面上右键点击“我的电脑”,选择属性,然后在弹出的页面上点“高级” -> “环境变量”,然后在弹出的页面中“系统变量”下点击“新建”,然后在弹出的窗口中“变量名 (N) 输入“ JAVA_HOME ”,在“变量值 (V) ”一栏中输入“ C:/j2sdk1.4.1_01 ”。
2、 以同样的方法设置: JBOSS_HOME 值为: C:/JBOSS
3、 以同样的方法在上面地方将 Path 的值后追加:以下内容:“ C:/j2sdk1.4.1_01/bin;C:/JBOSS/bin ”
二、创建程序目录
1、 在 C:/JBOSS 下新建一个 myproject 目录,用于存放自己的所有项目。
在 myproject 目录下新建三个目录:一个是 jsp 目录,其下用于存放所有的 jsp 文件和 servlet 文件及其它的 html ,
2、 image 文件等;一个是 ejb 目录,用于存放所有即将发布的 EJB 类文件;一个是 src 目录,用于存放所有的 java 源文件。
3、 在 jsp 目录下新建一个目录,并命名为: hello.war ,用来发布 WEB 程序,然后再在此目录下新建一系列文件夹:
即在 hello.war 下新建 WEB-INF (大写)文件夹,再在 WEB-INF 下新建 classes 文件夹,再在 classes 文件夹下新建
一个 hello 文件夹。
4、 在 ejb 目录下新建一个 client 目录和一个 hello.jar 目录,分别用于存放 EJB 客户端和要发布的服务器端类。然后再在
client 目录下新建一个 hello 目录,再在此目录下新建一个 ejb 目录。然后在 hello.jar 目录下新建一个 hello 目录和一个META-INF( 大写 ) 目录,并在 hello 目录中新建一个 ejb 目录。
5、 以上过程结束后,形成的目录结构如下图所示:
说明: 此节针对 ejb 开发初学者,主要是手动配置一个最基本的基于文本开发的环境,让初学者从头开始编写各类程序和配置文件, 以更清楚的了解 EJB 开发和部署的步聚与原理。这是作者在学习 EJB 开发时的一个总结,欢迎指正。作者联系地址址: josserchai@yahoo.com 一、需求软件列表及下载地址1、 Sun Java SDK ,我们采用的版本为: j2sdk1.4.1_01 ,下载地址为: http://www.sun.com/download/ ,下载后的文件名为: j2sdk-1_4_1_01-windows-i586.exe 2、 JBOSS ,一个免费的 EJB 容器。我们采用版本为: jboss-3.2.1_tomcat-4.1.24 , 这是一个内部己集成 Tomcat 的 EJB 容器。下载地址为: http://www.jboss.org/ ,下载后的文件名为: jboss-3.2.1_tomcat-4.1.24.zip 。 3、 注意:作者只保证在以上软件版本下以下步聚成功,对于其它的版本也应相同, 但作者没有求证。以下步聚请严格按照执行。 二、安装所需软件1、 安装 SDK 到 C:/j2sdk1.4.1_01 ;方法为:双击执行下载的 j2sdk-1_4_1_01-windows-i586.exe 文件,选择安装目录为 C:/j2sdk1.4.1_01 ,其它默认即可。 2、 安装 JBOSS ;方法为:将下载的 jboss-3.2.1_tomcat-4.1.24.zip 文件解压到任意一个目录,解压后会在此目录中产生 一个 jboss-3.2.1_tomcat-4.1.24 文件夹,在此文件夹下有一系列的文件和文件夹。然后在 C 盘根目录下建一个 JBOSS 目录, 并将刚才解压后 jboss-3.2.1_tomcat-4.1.24 文件夹下的一系列文件和文件夹全都拷贝到 C : /JBOSS 目录下。即将 JBOSS 安装到了 C:/JBOSS 目录中。 3、 以上两个步聚进行后,文件夹如下图所示:
三、配置运行环境及测试程序目录一、设置环境变量 1、 设置 JAVA_HOME 系统变量:在 win2k 下方法为,在桌面上右键点击“我的电脑”,选择属性,然后在弹出的页面上点“高级” -> “环境变量”,然后在弹出的页面中“系统变量”下点击“新建”,然后在弹出的窗口中“变量名 (N) 输入“ JAVA_HOME ”,在“变量值 (V) ”一栏中输入“ C:/j2sdk1.4.1_01 ”。 2、 以同样的方法设置: JBOSS_HOME 值为: C:/JBOSS 3、 以同样的方法在上面地方将 Path 的值后追加:以下内容:“ C:/j2sdk1.4.1_01/bin;C:/JBOSS/bin ” 二、创建程序目录 1、 在 C:/JBOSS 下新建一个 myproject 目录,用于存放自己的所有项目。 在 myproject 目录下新建三个目录:一个是 jsp 目录,其下用于存放所有的 jsp 文件和 servlet 文件及其它的 html , 2、 image 文件等;一个是 ejb 目录,用于存放所有即将发布的 EJB 类文件;一个是 src 目录,用于存放所有的 java 源文件。 3、 在 jsp 目录下新建一个目录,并命名为: hello.war ,用来发布 WEB 程序,然后再在此目录下新建一系列文件夹: 即在 hello.war 下新建 WEB-INF (大写)文件夹,再在 WEB-INF 下新建 classes 文件夹,再在 classes 文件夹下新建 一个 hello 文件夹。 4、 在 ejb 目录下新建一个 client 目录和一个 hello.jar 目录,分别用于存放 EJB 客户端和要发布的服务器端类。然后再在 client 目录下新建一个 hello 目录,再在此目录下新建一个 ejb 目录。然后在 hello.jar 目录下新建一个 hello 目录和一个 META-INF( 大写 ) 目录,并在 hello 目录中新建一个 ejb 目录。 5、 以上过程结束后,形成的目录结构如下图所示: 四、编写测试程序及相关脚本一、 测试 JBOSS 安装成功与否,方法如下:进入 C : /JBOSS 目录中,执行 run.bat –c all 启动具有全部功能的 JBOSS 配置服务器。屏幕经过一会滚动后不再滚动。这时启动 IE 输入: http://localhost:8080/jmx-console/index.jsp 即可看到 IE 中出现一系列列表,即表明 JBOSS 启动成功。此时可在启动 JBOSS 的 DOS 窗口上按 Ctrl+C 关闭 JBOSS 服务器。 二、 进入 C:/JBOSS/myproject/jsp/hello.war 目录中,用记事本新建一个 index.jsp 文件,内容如下: 用于测试 jsp 程序 <%@page contentType="text/html; charset=gb2312"%> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body bgcolor="#FFFFFF" text="#000000" topmargin="5"> <% String hello = "Hello world!this created by jsp file!"; out.println(hello); %> </body> </html> 三、 进入 C:/JBOSS/myproject/src 目录,新建一个 HelloWorld.java ,是一个 Servlet 类,内容如下: package hello; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<hr>"); out.println("Hello World! This is created by Servlet!"); out.println("<hr>"); } } 到此,我们就建立好了用于测试的 JSP 文件和 Servlet 类,下面将建 HelloWorld 的无状态 SessionBean 。 四、 进入 C:/JBOSS/myproject/src 目录,新建一个 Hello.java 文件,以实现 EJB 的 Remote 接口,内容如下, package hello.ejb; /** * Remote interface for Enterprise Bean: Hello * Remote 接口 */ public interface Hello extends javax.ejb.EJBObject { /** * 唯一的方法 hello ,向客户端返回问候。 */ public String hello() throws java.rmi.RemoteException; } 同样在此目录中新建一个 HelloLocal.java 文件,实现 Local 接口,内容如下: package hello.ejb; import javax.ejb.EJBLocalObject; public interface HelloLocal extends EJBLocalObject { public String hello(); } 同样在此目录中新建一个 HelloHome.java 文件,实现 Home 接口,内容如下: package hello.ejb; /** * Home interface for Enterprise Bean: Hello * Home 接口 */ public interface HelloHome extends javax.ejb.EJBHome{ /** * Creates a default instance of Session Bean: Hello */ public Hello create() throws javax.ejb.CreateException, java.rmi.RemoteException; } 同样在此目录中新建一个 HelloLocalHome.java 文件,实现 LocalHome 接口,内容如下: package hello.ejb; import javax.ejb.EJBLocalHome; public interface HelloLocalHome extends EJBLocalHome { HelloLocal create() throws javax.ejb.CreateException; } 同样在此目录中新建一个 HelloBean.java ,实现 EJB 类,内 [ 容如下: package hello.ejb; /** * Bean implementation class for Enterprise Bean: Hello */ public class HelloBean implements javax.ejb.SessionBean{ private javax.ejb.SessionContext mySessionCtx; /** * getSessionContext */ public javax.ejb.SessionContext getSessionContext(){ return mySessionCtx; } /** * setSessionContext */ public void setSessionContext(javax.ejb.SessionContext ctx){ mySessionCtx = ctx; } /** * ejbActivate */ public void ejbActivate(){ } /** * ejbCreate */ public void ejbCreate() throws javax.ejb.CreateException{ } /** * ejbPassivate */ public void ejbPassivate(){ } /** * ejbRemove */ public void ejbRemove(){ } /** * 商务方法 */ public String hello(){ return "Hello,World! this is created by EJB!"; } } 至此,我们己经将 EJB 类所需的所有的所有类编写好了,下面我们编写用于测试此 EJB 程序的文件,具体来说有两个: 一个是用客户端 Servlet 来调用 EJB ,另一个是用客户端类来调用 EJB 。实现如下: 五、 实现测试 EJB 的程序 进入 C:/JBOSS/myproject/src 目录中,新建一个 HelloServlet.java 文件,用于测试通过 Servlet 调用 EJB 。内容如下: package hello; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import javax.ejb.*; import javax.naming.InitialContext; import javax.naming.Context; import hello.ejb.*; import java.util.*; public class HelloServlet extends HttpServlet { private HelloHome home; public void init() throws ServletException { try { String initCtxFactory = getInitParameter(Context.INITIAL_CONTEXT_FACTORY); String providerURL = getInitParameter(Context.PROVIDER_URL); Properties env = new Properties(); if(initCtxFactory!=null) { env.put(Context.INITIAL_CONTEXT_FACTORY,initCtxFactory); } if(providerURL!=null) { env.put(Context.PROVIDER_URL,providerURL); } Context ctx=new InitialContext(env); Object objRef = ctx.lookup("Hello"); // 主接口 home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(objRef,hello.ejb.HelloHome.class); }catch(javax.naming.NamingException ne){ System.out.println("Create Exception caught:"+ne); throw new ServletException(ne.toString()); }catch(Exception e) { throw new ServletException(e.toString()); } } public void service(HttpServletRequest req,HttpServletResponse res) throws IOException { res.setContentType("text/html"); PrintWriter out =res.getWriter(); out.println("<html><head><title>the first EJB</title></head>"); try{ // 组件接口 Hello bean =home.create(); out.println(bean.hello()); }catch(javax.ejb.CreateException ce){ out.println("Create Exception caught:"+ce); ce.printStackTrace(out); }catch(java.rmi.RemoteException re){ out.println("Remote Exception caught:"+re); re.printStackTrace(out); } out.println("</body></html>"); } } 同样在此目录中,新建一个 HelloClient.java 文件,用于通过客户端类测试 EJB ,内容如下: package hello.ejb; import java.util.*; import java.io.*; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import javax.naming.Context; import javax.rmi.PortableRemoteObject; import hello.ejb.*; public class HelloClient { public static void main(String[] args) { try { //jndi 配置 , 应实现为外部属性文件 Properties env = new Properties(); //config.properties 文件应该放在和 hello 包目录所在目录的同级目录中。即它和 hello 文件夹同在一个文件夹中。 env.load(new FileInputStream("config.properties")); // Get a naming context System.out.println(env); InitialContext ctx = new javax.naming.InitialContext(env); System.out.println("Got context"); // Get a reference to the Interest Bean //jboss 默认 jndi 名为 ejb-jar.xml 中的 :ejb-name Object ref = ctx.lookup("Hello"); System.out.println("Got reference"); // Get a reference from this to the Bean"s Home interface HelloHome home = (HelloHome)PortableRemoteObject.narrow(ref, HelloHome.class); // Create an Hello object from the Home interface Hello hello = home.create(); // call the hello() method System.out.println(hello.hello()); }catch(Exception e) { System.out.println(e.toString()); } } } 然后,我们还需增加一个此客户端程序运行时所需的 JNDI 配置文件。方法如下: 进入 : C:/JBOSS/myproject/ejb/client 目录,用记事本新建一个 config.properties 文件,内容如下三行: java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=jnp://192.168.10.114:1099 六、 编写服务器端的配置文件, 首先进入 C:/JBOSS/myproject/jsp/hello.war/WEB-INF 目录,用记事本创建一个 web.xml 文件,用于配置 servlet ,内容如下: <?xml version="1.0" encoding="gb2312"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>HelloWorld</servlet-name> <display-name>HelloWorld</display-name> <servlet-class>hello.HelloWorld</servlet-class> </servlet> <servlet> <servlet-name>HelloServlet</servlet-name> <display-name>HelloServlet</display-name> <servlet-class>hello.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping> </web-app> 然后进入 C:/JBOSS/myproject/ejb/hello.jar/META-INF 目录,创建一个 ejb-jar.xml 文件,内容如下: <?xml version="1.0" encoding="gb2312"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <description>This is Hello EJB example</description> <display-name>helloeEJB</display-name> <enterprise-beans> <session> <display-name>Hello</display-name> <ejb-name>Hello</ejb-name> <home>hello.ejb.HelloHome</home> <remote>hello.ejb.Hello</remote> <local-home>hello.ejb.HelloLocalHome</local-home> <local>hello.ejb.HelloLocal</local> <ejb-class>hello.ejb.HelloBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> </ejb-jar> 在此目录中,再建一个 jboss-service.xml 文件,内容如下: <?xml version="1.0" encoding="gb2312"?> <jboss> <enterprise-beans> <session> <ejb-name>Hello</ejb-name> <jndi-name>Hello</jndi-name> </session> <secure>true</secure> </enterprise-beans> <reource-managers/> </jboss> 七、 到此为止,我们将所有的测试文件和配置文件己编写完成。 八、 下面我们编写编译这些类文件的脚本程序,进入 C:/JBOSS/BIN 目录下,新建一个 com.bat 文件,内容如下: set classpath=.;c:/j2sdk1.4.1_01/lib/tools.jar;C:/JBOSS/client/jbossall-client.jar;C:/JBOSS/client/jboss-client.jar ;C:/JBOSS/client/jboss-iiop-client.jar;C:/JBOSS/server/default/lib/jnpserver.jar;C:/JBOSS/client/jnp-client.jar; C:/JBOSS/client/log4j.jar;C:/JBOSS/client/jboss-j2ee.jar; C:/JBOSS/server/all/lib/javax.servlet.jar javac %1 同样在此目录新建一个 runclient.bat ,用于运行客户端程序,内容如下: set classpath=.;c:/j2sdk1.4.1_01/lib/tools.jar;C:/JBOSS/client/jbossall-client.jar;C:/JBOSS/client/jboss-client.jar; C:/JBOSS/client/jboss-iiop-client.jar;C:/JBOSS/server/default/lib/jnpserver.jar;C:/JBOSS/client/jnp-client.jar; C:/JBOSS/client/log4j.jar; C:/JBOSS/client/jboss-j2ee.jar; C:/JBOSS/server/all/lib/javax.servlet.jar java %1 五、编译和运行测试程序1、 进入 C:/JBOSS/myproject/src 目录中,运行 : com *.java 将产生一系列 .class 文件。 3、 将产生的 HelloWorld.class 和 HelloServlet.class 拷贝到 C:/JBOSS/myproject/jsp/hello.war/WEB-INF/classes/hello 目录中。 4、 将产生的 HelloHome.class 和 HelloClient.class 和 Hello.class 文件放入 C:/JBOSS/myproject/ejb/client/hello/ejb 目录中 5、 将产生的 Hello.class 和 HelloBean.class 和 HelloHome.class 和 HelloLocal.class 和 HelloLocalHome.class 放入 C:/JBOSS/myproject/ejb/hello.jar/hello/ejb 目录中。 至此,我们己经完成了所有类的编译,并将它们放入到适当的地方,目前为止,文件和目录分布结构如下图所示: C:/JBOSS/server/all/deploy 下。 这时启动 JBOSS 的工作台自动会发布此两个目录。我们便可以测试了。 启动 JBOSS : run.bat –c all 用 IE 打开 http://localhost:8080/hello/index.jsp 测试 JSP 文件 用 IE 打开 http://localhost:8080/hello/HelloWorld 测试 Serlvet 用 IE 打开 http://localhost:8080/hello/HelloServlet 测试用 Servlet 调用 EJB 然后进入 C:/JBOSS/myproject/ejb/client 运行: Runclient hello/ejb/HelloClient 如下图所示:即成功了!具体目录结构及源代请见附件 myproject.rar |
|
说明:此节是在上一节基础之上写的,上一节中我们把JBOSS服务器配置好,并测试通过了。这一节我们来看看怎么样在JBOSS中用Jsp和Servlet连结数据库,并使用它的连接池,你一定要在看完上节后再看这一节。作者联系地址:josserchai@yahoo.com |
一、配置MySQL数据库 1、安装好mysql数据库,这个很简单吧,直接上www.mysql.org上下一个,然后直接安装即可,如我就是把mysql安装在C:/mysql目 录下的。设置用户为root,密码为空。 2、在mysql中创建一个数据库,名字为:test;再在此库中创建一个表,表名为tree。使用脚本如下: create database test; create table tree( nodeid int(11) NOT NULL, nodetext varchar(60), primary key (`nodeid`) ) 3、然后再此表中插入两条数据 use test; insert into tree values('1','测试数据1'); insert into tree values('2','测试数据2'); 4、下载并安装mySQL的JDBC驱动程序,去www.mysql.org下载吧。下载后的文件名为:mysql-connector-jdbc-3.0.10-stable.zip, 用winzip解开,找到其中mysql-connector-jdbc-3.0.10-stable目录中的mysql-connector-java-3.0.10-stable-bin.jar文件, 把它拷贝到JBOSS安装目录下的Server下的lib目录中,即copy到C:/JBOSS/server/all/lib目录中(注意,我们这里采用的是JBOSS的 具有全部功能的启动方式,JBOSS默认有三个启动方式,用run -c <方式>来启动,这三种方式是:all,具有全部JBOSS服务器 功能;efault,这是默认的方式;minimal,这是最小配置方式。这三种方式分别对就于安装目录下的Server目录听all ,default 和minimal目录)。同时我们要注意:在JBOSS的安装目录下C:/JBOSS/下还有一个lib目录即C:/JBOSS/lib目录,这个目录中存放的是 JBOSS服务器启动时所需的所有jar包,你不能将你的任何外部jar包放入此目录。如果你想启动default,则需将jdbc驱动程序放入 C:/JBOSS/server/default/lib目录中。 5、配置JBOSS的数据库配置文件:在C:/JBOSS/server/all/deploy目录中新建一个mysql-ds.xml文件,注意,文件名一定要以 -(中划线)ds结尾,此xml文件的内容如下: <?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>MySql</jndi-name> <connection-url>jdbc:mysql://10.0.0.18:3306/test</connection-url> <driver-class>org.gjt.mm.mysql.Driver</driver-class> <user-name>root</user-name> <password></password> </local-tx-datasource> </datasources> 解说一下上面的内容: <jndi-name>表示的是jndi名称,就是呆会在程序中查找jndi名称要用的(还记得上节中我们用的查找ejb的jndi吧,就是那个, 只不过这个是查找数据库连接池的);<connection-url>是连接字符串,前面是固定的后面紧跟的是你的数据库所在的IP地址及 mysql默认端口,然后跟的是数据库名如test;<driver-class>是固定的数据库驱动类库; <user-name>是用于连接数据库的用户名,我这里用的是root,你可以用其它的 <password>是上面用户的密码,我的root用户是空密码。 一定要注意这个文件的名称和存放的位置是:C:/JBOSS/server/all/deploy/mysql-ds.xml 6、编写测试用的jsp文件。 在上一节的C:/JBOSS/myproject/jsp/hello.war目录中,新建一个testmysql.jsp文件,内容如下: <%@page contentType="text/html; charset=gb2312"%> <html> <head> <title>测试MySql数据库</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <%@page import = "javax.sql.DataSource"%> <%@page import = "javax.naming.InitialContext"%> <%@page import="java.sql.*"%> <body> <h3>测试MySql数据库</h3> <% InitialContext ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:/MySql");//这里要和mysql-ds.xml中对应 Connection conn = ds.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM tree"); while ( rs.next() ){ out.println(rs.getString("nodetext") + "<br>"); } conn.close(); %> </body> </html> 然后,把此文件所在的目录hello.war拷贝到C:/JBOSS/Server/all/deploy/目录中,如果你在上一节中己经考贝了此目录到此,则只 需把testmysql.jsp文件拷贝过来即可以了。 7、测试JSP连接数据库 重新启动JBOSS服务器,run -c all,如果你的服务器在你拷贝JDBC驱动程序到server/all/lib目录中之前己经运行,你一定要重启服 务器才行。然后在IE或其它浏览器中输入:http://localhost:8080/hello/testmysql.jsp,看看出来什么了,是不是有两行数据? 对了,这就对了。至于Servlet和EJB中使用数据库连接池的方法也是一样,这个我就不写了。自己去测试一下吧。 二、配置SQL Server2000数据库 配置SQL server数据库,并使用它的连接池过程基本一样的,我就写的简略了一些:过程如下: 1、安装一个SQL Server 2000数据库,或你己经有了在其它电脑上也可以。设置一个用户用于连接它,我这里用sa,密码为空。 2、运行SQL Server客户端,运行以下脚本,生成数据库及表和插入数据: create database test go create table tree( nodeid int primary key, nodetext varchar(60) ) go insert into tree values('1','SQL Server测试数据1') go insert into tree values('2','SQL Server测试数据2') go 3、下载并安装SQL Server的JDBC驱动程序,下载地址为: http://www.microsoft.com/downloads/details.aspx?FamilyID=86212d54-8488-481d-b46b-af29bb18e1e5&Dis playLang=en下载后是一个可执行的安装包,直接运行它,默认安装到C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC下面。 4、安装好后,把C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib目录中的三个jar文件 (msbase.jar;mssqlserver.jar;msutil.jar)拷贝到C:/JBOSS/server/all/lib目录中。 5、配置JBOSS使用MSSQL2k的配置文件,在C:/JBOSS/server/all/deploy目录中新建一个文件命名为:mssql-ds.xml, 其内容如下: <?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>MSSQL</jndi-name> <connection-url>jdbc:microsoft:sqlserver://10.0.0.18:1433;DatabaseName=test</connection-url> <driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class> <user-name>sa</user-name> <password></password> </local-tx-datasource> </datasources> 解说就不必了,各项内容和上面mysql的基本差不多。此文件一定要放入C:/JBOSS/server/all/deploy目录中。 6、编写JSP测试文件,在在上一节的C:/JBOSS/myproject/jsp/hello.war目录中,新建一个testmssql.jsp文件,内容如下: <%@page contentType="text/html; charset=gb2312"%> <html> <head> <title>测试SqlServer2K数据库</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <%@page import = "javax.sql.DataSource"%> <%@page import = "javax.naming.InitialContext"%> <%@page import="java.sql.*"%> <body> <h3>测试SqlServer2K数据库</h3> <% InitialContext ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:/ MSSQL ");//这里要和mysql-ds.xml中对应 Connection conn = ds.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM tree"); while ( rs.next() ){ out.println(rs.getString("nodetext") + "<br>"); } conn.close(); %> </body> </html> 然后,把此文件所在的目录hello.war拷贝到C:/JBOSS/Server/all/deploy/目录中,如果你在上一节中己经考贝了此目录到此, 则只需把testmssql.jsp文件拷贝过来即可以了。 7、测试JSP连接数据库 重新启动JBOSS服务器,run -c all,如果你的服务器在你拷贝JDBC驱动程序到server/all/lib目录中之前己经运行,你一定要 重启服务器才行。然后在IE或其它浏览器中输入:http://localhost:8080/hello/testmssql.jsp,就可以看致到有两行数据输出。 总结,在上面我们给出了如何在JBOSS中配置和使用不同数据库连接池的方法并给出了测试程序。在下面一节中,我将给出如何在 EJB中连接数据库并给出一个示例。 |