/ 中存储网

myeclipse+weblogic+MySQL数据源的过程图文讲解

2014-09-24 12:19:04 来源:中存储网

MyEclipse+WebLogic+MySQL数据源的配置,首先在感觉,在Weblogic的控制台上配置Web应用程序的数据源还是比较简单的。这里作为测试,为了清晰阐述,分为三个标题:测试工程准备、数据源配置、发布测试。

测试工程准备
主要准备测试配置数据源的Java Web工程,工程名称为WeblogicDataSource。
BlogService类通过查找JNDI名字,来获取到的一个数据源(DataSource)的实例,然后通过连接MySQL数据库,从数据库blog的表jblog_article中查询得到记录,返回一个结果的List集合。BlogService.java的源代码如下所示:
package org.shirdrn.blog;  
import java.sql.Connection;  
import java.sql.ResultSet;  
import java.sql.Statement;  
import java.util.ArrayList;  
import java.util.List;  
import javax.naming.Context;  
import javax.naming.InitialContext;  
import javax.sql.DataSource;  
import org.shirdrn.blog.entity.Article;  
public class BlogService {  
public List getAticles(String sql) throws Exception { // 改方法通过传递一个sql查询来获取数据,将在后面的Servlet中调用  
   Context ctx = new InitialContext();  
   DataSource ds = (DataSource)ctx.lookup("jdbc/mysql"); // 数据源名称为jdbc/mysql  
   Connection conn = ds.getConnection();  
   Statement stmt = conn.createStatement();  
   ResultSet rs = stmt.executeQuery(sql);  
   List articleList = new ArrayList();  
   while(rs.next()) {  
    Article article = new Article();  
    article.setId(new Integer(rs.getInt(1)));  
    article.setCid(new Integer(rs.getInt(2)));  
    article.setUid(new Integer(rs.getInt(3)));  
    article.setUserName(rs.getString(4));  
    article.setTitle(rs.getString(5));  
    article.setUrlName(rs.getString(6));  
    article.setStatus(new Short(rs.getShort(7)));  
    article.setPassword(rs.getString(8));  
    article.setContent(rs.getString(13));  
    articleList.add(article);  
   }  
   return articleList;  
}  

上面用到一个实体类Article,实体类代码如下所示:
package org.shirdrn.blog.entity;  
public class Article {  
private Integer id;  
private Integer cid;  
private Integer uid;  
private String userName;  
private String title;  
private String urlName;  
private Short status;  
private String password;  
private String from;  
private String forumUrl;  
private String description;  
private String excerpt;  
private String content;  
private String comments;  
private String views;  
private Integer dataline;  
private Boolean isTop;  
private Boolean isCommend;  
private Boolean isCheck;  
private String tags;  
public Integer getId() {  
   return id;  
}  
public void setId(Integer id) {  
   this.id = id;  
}  
public Integer getCid() {  
   return cid;  
}  
public void setCid(Integer cid) {  
   this.cid = cid;  
}  
public Integer getUid() {  
   return uid;  
}  
public void setUid(Integer uid) {  
   this.uid = uid;  
}  
public String getUserName() {  
   return userName;  
}  
public void setUserName(String userName) {  
   this.userName = userName;  
}  
public String getTitle() {  
   return title;  
}  
public void setTitle(String title) {  
   this.title = title;  
}  
public String getUrlName() {  
   return urlName;  
}  
public void setUrlName(String urlName) {  
   this.urlName = urlName;  
}  
public Short getStatus() {  
   return status;  
}  
public void setStatus(Short status) {  
   this.status = status;  
}  
public String getPassword() {  
   return password;  
}  
public void setPassword(String password) {  
   this.password = password;  
}  
public String getFrom() {  
   return from;  
}  
public void setFrom(String from) {  
   this.from = from;  
}  
public String getForumUrl() {  
   return forumUrl;  
}  
public void setForumUrl(String forumUrl) {  
   this.forumUrl = forumUrl;  
}  
public String getDescription() {  
   return description;  
}  
public void setDescription(String description) {  
   this.description = description;  
}  
public String getExcerpt() {  
   return excerpt;  
}  
public void setExcerpt(String excerpt) {  
   this.excerpt = excerpt;  
}  
public String getContent() {  
   return content;  
}  
public void setContent(String content) {  
   this.content = content;  
}  
public String getComments() {  
   return comments;  
}  
public void setComments(String comments) {  
   this.comments = comments;  
}  
public String getViews() {  
   return views;  
}  
public void setViews(String views) {  
   this.views = views;  
}  
public Integer getDataline() {  
   return dataline;  
}  
public void setDataline(Integer dataline) {  
   this.dataline = dataline;  
}  
public Boolean getIsTop() {  
   return isTop;  
}  
public void setIsTop(Boolean isTop) {  
   this.isTop = isTop;  
}  
public Boolean getIsCommend() {  
   return isCommend;  
}  
public void setIsCommend(Boolean isCommend) {  
   this.isCommend = isCommend;  
}  
public Boolean getIsCheck() {  
   return isCheck;  
}  
public void setIsCheck(Boolean isCheck) {  
   this.isCheck = isCheck;  
}  
public String getTags() {  
   return tags;  
}  
public void setTags(String tags) {  
   this.tags = tags;  
}  

实现的Servlet也比较简单,Servlet名称GetArticlesServlet,映射名称为getArticles,代码如下所示:
package org.shirdrn.servlet;  
import java.io.IOException;  
import java.io.PrintWriter;  
import java.util.List;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import javax.servlet.http.HttpSession;  
import org.shirdrn.blog.BlogService;  
public class GetArticlesServlet extends HttpServlet {  
public GetArticlesServlet() {  
   super();  
}  
public void destroy() {  
   super.destroy();   
}  
public void doGet(HttpServletRequest request, HttpServletResponse response)  
    throws ServletException, IOException {  
   doPost(request, response);  
}  
public void doPost(HttpServletRequest request, HttpServletResponse response)  
    throws ServletException, IOException {  
   HttpSession session = request.getSession();  
   String sql = "select * from jblog_article";  
   BlogService bs = new BlogService();  
   List articleList = null;  
   try {  
    articleList = bs.getAticles(sql);  
   } catch (Exception e) {  
    e.printStackTrace();  
   }  
   session.setAttribute("articleList", articleList);  
   response.sendRedirect("listArticles.jsp");  
}  
public void init() throws ServletException {  
}  

相关的显示查询结果的列表页面只有一个,也就是listArticles.jsp,代码如下所示:
%@ page language="java" import="java.util.*" pageEncoding="utf-8"%  
%@page import="org.shirdrn.blog.entity.Article"%  
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
html  
head   
    title博客文章列表页面/title  
/head   
body  
    %  
    List articleList = (List)session.getAttribute("articleList");  
     %  
/body  
table style="color:yellow" align="center" bgcolor="green"  borderColor="black"  
tr  
   thID/th  
   thCID/th  
   thUID/th  
   th用户名/th  
   th标题/th  
/tr  
   %      
    for(int i=0; iarticleList.size(); i++) {  
     Article a = (Article)articleList.get(i);  
   %  
   tr  
   td%=a.getId() %/td  
   td%=a.getCid() %/td  
   td%=a.getUid() %/td  
   td%=a.getUserName() %/td  
   td%=a.getTitle() %/td  
   /tr  
   %} %  
/table  
/html 
对应Java Web工程的应用部署描述文件web.xml内容如下所示:
?xml version="1.0" encoding="UTF-8"?  
!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-nameGetArticlesServlet/servlet-name  
   servlet-class  
    org.shirdrn.servlet.GetArticlesServlet  
   /servlet-class  
/servlet  
servlet-mapping  
   servlet-nameGetArticlesServlet/servlet-name  
   url-pattern/getArticles/url-pattern  
/servlet-mapping  
welcome-file-list  
   welcome-fileindex.jsp/welcome-file  
/welcome-file-list  
/web-app 
值得注意的是,这里使用的是web-app 2.3部署描述文件,如果是2.4的,一定会出错的。

配置数据源
在MyEclipse中,配置Server中Weblogic里面的Paths,也就是把数据库的JDBC驱动程序的jar文件加入到CLASSPATH中,我这里使用的是MySQL数据库,对应的JDBC驱动程序版本为mysql-connector-java-5.0.8-bin.jar,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置1 
MyEclipse+WebLogic+MySQL数据源的配置
在MyEclipse中编译工程后,先使用MyEclipse的打包工具打成WAR包:
选择Export下的“J2EE”-“WAR file(MyEclipse)”,指定路径,我存放到了D:beauser_projectsdomainssndomainapplicationsWeblogicDataSource.war下面。
这时候,可以启动Weblogic Server了(前提条件是配置好了Weblogic Server,例如我的是snserver),并登录到Weblogic Console。打开左侧“部署”下的“Web应用程序模块”,可以看到“_appsdir_WeblogicDataSource_dir”,这是因为我在MyEclipse中导出为war文件的时候,直接导出到Weblogic Server的应用程序目录下,自动进行了部署,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置2 
MyEclipse+WebLogic+MySQL数据源的配置
可以看到右侧“部署”选项卡中,“部署状态”为可用。
配置数据源,首先要做的就是,配置数据库连接缓冲池;然后是基于改连接池的数据源的配置。
(一)数据库连接池配置
下面是数据库连接池的配置过程:
在左侧导航菜单中,依次打开“服务”-“JDBC”,单击“连接缓冲池”,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置3 
MyEclipse+WebLogic+MySQL数据源的配置
单击“配置新的 JDBC连接缓冲池”链接,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置4 
MyEclipse+WebLogic+MySQL数据源的配置
配置数据库类型(这里为MySQL)和数据库驱动程序(这里选择com.mysql.jdbc.Driver),单击“继续”按钮,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置5 
MyEclipse+WebLogic+MySQL数据源的配置
配置JDBC连接池名称(这里为MySQLcp)、数据库名称(这里为blog)、主机名(这里为localhost)、端口号(这里使用MySQLcp数据库,默认为3306)、数据库用户名(这里为root)、数据库登录口令,然后单击“继续”按钮,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置6 
MyEclipse+WebLogic+MySQL数据源的配置
单击“测试驱动程序配置”,测试前面配置的数据库的JDBC驱动程序,如果没有问题,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置7 
MyEclipse+WebLogic+MySQL数据源的配置
左上角显示绿色的文字“连接成功”,否则就没有通过配置的测试。单击“创建和部署”按钮,可以看到成功配置的JDBC数据库连接缓冲池,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置8 
MyEclipse+WebLogic+MySQL数据源的配置
(二)配置数据源
在左侧导航菜单中,依次打开“服务”-“JDBC”,单击“数据源”,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置9 
MyEclipse+WebLogic+MySQL数据源的配置
单击“配置新的JDBC数据源”链接,配置数据源名称(这里为MySQLds)和JNDI名称(这里为jdbc/mysql),如图所示:
MyEclipse+WebLogic+MySQL数据源的配置10 
MyEclipse+WebLogic+MySQL数据源的配置
单击“继续”链接,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置11 
MyEclipse+WebLogic+MySQL数据源的配置
可以从下拉列表中选择已经存在的数据库连接池,然后单击“继续”按钮,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置12 
MyEclipse+WebLogic+MySQL数据源的配置
单击“创建”按钮,根据刚才配置的数据源选项创建数据源,如图所示:
MyEclipse+WebLogic+MySQL数据源的配置13 
MyEclipse+WebLogic+MySQL数据源的配置
数据源配置完成。
这时,数据源MySQLcp(jdbc/mysql)可以为Web应用提供数据源了。

发布测试
如果Web应用打包后的war文件没有放在Weblogic Server的应用程序目录下,可以在Weblogic Console上进行上传,如果已经放到Weblogic Server的应用程序目录下,可以进行测试了。
打开连接http://192.168.151.201:7001/WeblogicDataSource/getArticles,显示列表如图所示:
MyEclipse+WebLogic+MySQL数据源的配置14 
MyEclipse+WebLogic+MySQL数据源的配置
通过测试,说明上述配置的数据源是存在的,可以为测试的Web应用提供数据源。
那么MyEclipse+WebLogic+MySQL数据源的配置就向你介绍到这里,希望对你有所帮助。