下面就开始我们的整合过程,我的开发工具是Myeclipse6.5,Mysql5。
一、建立一个数据库的连接
打开myeclipse中的DBbrowser工具,新建一个MySql的数据库连接,如下图:
点击finish完成数据库连接的创建。
二、创建一个Enterprise Application Project
在myeclipse中新建工程,打开新建对话框,选择如下的工程类型:
一直点解next到下面的设置对话框,进行图片中标注的设置:
再点击next到下面的设置对话框,进行标注的设置:
点击finish完成工程的创建。
三、编写EJB3模块
在项目列表中选择刚才创建的EJBStrutsEJB,将src/META-INF下的persistence.xml内容修改成如下的内容:
- <?xml version="1.0" encoding="UTF-8"?>
- <persistence xmlns="http://java.sun.com/xml/ns/persistence"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
- http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
- <persistence-unit name="EJB3EJBPU" transaction-type="JTA">
- <jta-data-source>java:/MySqlDS</jta-data-source>
- <properties>
- vv <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
- <property name="hibernate.show_sql" value="true"/>
- </properties>
- </persistence-unit>
- </persistence>
1.打开DBbrowser中建立的数据库连接struts2,然后找到为工程建立的数据库struts2,找到要建立实体bean(Entity Bean)的表(我的是用了一个UserInformation表,建表语句:
create table `struts2`.`userinformation`(
`UserLoginId` CHAR(20) default '' not null,
`UserPassword` CHAR(20) default '' not null,
`UserName` VARCHAR(20),
`UserAge` INT,
`Occupation` VARCHAR(50),
primary key (`UserLoginId`)
);),点击右键,选择下图所示的选项:
点击next进入下面的设置:
一直点击next到输入类名的对话框:
在产生的包名上点击右键新建一个EJB3 Session Bean:
在两个接口文件中定义个方法:
UserInformation findById(String userLoginId);
在session bean:UserInformtionDAO中实现此方法,代码如下:
- package com.ejb3.entity;
- import javax.ejb.Stateless;
- import javax.persistence.EntityManager;
- import javax.persistence.PersistenceContext;
- @Stateless
- public class UserInformationDAO implements UserInformationDAOLocal,
- UserInformationDAORemote {
- @PersistenceContext
- private EntityManager em;
- public UserInformation findById(String userLoginId) {
- // TODO Auto-generated method stub
- UserInformation user = em.find(UserInformation.class,userLoginId);
- return user;
- }
- }
到此工程的EJB模块设置完成。下面我们进行Web模块的设置。
四、设置web模块
1、打开新建工程时产生的EJB3StrutsWeb工程,在WebRoot/WEB-INF/lib下加入Struts2、spring等相关的包,并加入到buildpath。在WEB-INF下建立一个名为jndi.properties的配置文件,内容如下:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost/:1099
建立web.xml文件,内容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
- <display-name>EJB3Struts</display-name>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:applicationContext*.xml</param-value>
- </context-param>
- <context-param>
- <param-name>log4jConfigLocation</param-name>
- <param-value>classpath:log4j.properties</param-value>
- </context-param>
- <filter>
- <filter-name>EJB3Struts</filter-name>
- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>EJB3Struts</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <listener>
- <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
- </listener>
- <!-- Listener contextConfigLocation -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
2、在src源文件夹下建立如下的配置文件:
struts.properties:
struts.objectFactory = spring
log4j.properties:
log4j.rootLogger=info,console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
log4j.logger.com.wehave=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=info
log4j.logger.java.sql.PreparedStatement=info
log4j.logger.java.sql.ResultSet=info
log4j.logger.javax.sql=info
spring配置文件applicationContext.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jee="http://www.springframework.org/schema/jee"
- xmlns:util="http://www.springframework.org/schema/util"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
- <bean id="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value>classpath:jboss.properties</value>
- </list>
- </property>
- </bean>
- <util:properties id="evn" location="/WEB-INF/jndi.properties">
- </util:properties>
- <jee:jndi-lookup jndi-name="EJB3Struts/UserInformationDAO/remote"
- id="userInformationDAO" lookup-on-startup="true" cache="true"
- proxy-interface="com.ejb3.entity.UserInformationDAORemote"
- environment-ref="evn">
- </jee:jndi-lookup>
- <bean id="getUserAction" class="com.ejb3.action.GetUserAction">
- <property name="userInformationDAO">
- <ref local="userInformationDAO" />
- </property>
- </bean>
- </beans>
struts配置文件struts.xml:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <package name="EJB3Struts" extends="struts-default">
- <action name="getUser" class="getUserAction" method="showUser">
- <result>jsp/showuser.jsp</result>
- </action>
- </package>
- </struts>
4、创建action文件,类名为GetUserAction:
- package com.ejb3.action;
- import com.ejb3.entity.UserInformation;
- import com.ejb3.entity.UserInformationDAORemote;
- import com.opensymphony.xwork2.ActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class GetUserAction extends ActionSupport {
- /**
- *
- */
- private static final long serialVersionUID = -4140397287976560677L;
- private UserInformationDAORemote userInformationDAO;
- public String showUser() {
- String userLoginId = "ceshi1";//数据库中存在的一个账号
- UserInformation user = userInformationDAO.findById(userLoginId);
- ActionContext.getContext().put("user", user);
- return SUCCESS;
- }
- public UserInformationDAORemote getUserInformationDAO() {
- return userInformationDAO;
- }
- public void setUserInformationDAO(
- UserInformationDAORemote userInformationDAO) {
- this.userInformationDAO = userInformationDAO;
- }
- }
5、创建jsp文件
1)修改生成的index.jsp文件内容如下:
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib uri="/struts-tags" prefix="s" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>导航页</title>
- </head>
- <body>
- <a href="<s:url action='getUser'/>">查询用户</a>
- </body>
- </html>
2)在WebRoot下建立一个文件加专门存放jsp文件,文件夹名称为jsp,在jsp文件夹下建立一个showuser.jsp,内容如下:
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib uri="/struts-tags" prefix="s" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>用户信息</title>
- </head>
- <body>
- <h2>用户信息:</h2>
- <p>
- <s:text name="userName">
- <s:property value="#user.userName"/>
- </s:text>
- </p>
- </body>
- </html>
至此,ejb模块和web模块的编写设置完成,下面进行我们的发布过程。
五、发布工程
1、打开preferences设置对话框,选择Myeclipse Enterprise Workbech,选择servers,找到jboss4.x,设置服务器。
2、发布工程,首先将mysql5的驱动包放到JBOSS_HOME/server/default/lib下,并在server/default/deploy文件夹下添加自己的数据源配置文件,如我的文件为mysql-ds.xml,内容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- $Id: mysql-ds.xml 71535 2008-04-01 07:05:03Z adrian@jboss.org $ -->
- <!-- Datasource config for MySQL using 3.0.9 available from:
- http://www.mysql.com/downloads/api-jdbc-stable.html
- -->
- <datasources>
- <local-tx-datasource>
- <jndi-name>MySqlDS</jndi-name>
- <connection-url>jdbc:mysql://localhost:3306/struts2</connection-url>
- <driver-class>com.mysql.jdbc.Driver</driver-class>
- <user-name>root</user-name>
- <password>root</password>
- <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
- <!-- should only be used on drivers after 3.22.1 with "ping" support
- <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
- -->
- <!-- sql to call when connection is created
- <new-connection-sql>some arbitrary sql</new-connection-sql>
- -->
- <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers
- <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
- -->
- <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
- <metadata>
- <type-mapping>mySQL</type-mapping>
- </metadata>
- </local-tx-datasource>
- </datasources>
,这种文件在JBOSS_HOME/docs/examples/jca下有很多,可以参考设置自己的数据源。然后点击工具栏中的发布按钮:
打开如下对话框,从中选择EJB3Struts,然后点击Add,按照以下图解进行发布。
在上面的对话框中选择自己设置的jboss服务器,然后点击finish完成工程的发布。
六、测试工程
1、启动服务,点击工具栏中的服务器按钮,找到自己设置的jboss服务器(在服务器的设置中,要把enable选中在此才能看到自己设置的服务器),点击start启动服务器。
等待服务器启动完毕后,确保启动过程中没有报错。在浏览器中输入http://localhost:8080/EJB3StrutsWeb
显示导航页面,点击页面中的“查询用户”连接,可以显示数据库中对应账号“ceshi1”的用户性别,如下图:
如果可以正确的打印出用户姓名,说明我们的整个配置过程是成功的。
注:以上过程是我自己研究的过程,不知道是否适合各位网友,有什么问题请大家批评指正。