1.WebLogic的下載與安裝html
2.在Eclipse中添加WebLogicjava
3.WebLogic配置jndi數據源mysql
4.使用WebLogic部署Web應用web
5.WebLogic建立虛擬主機和綁域名sql
1、WebLogic的介紹
WebLogic是美國bea公司出品的一個application server,確切的說是一個基於Javaee架構的中間件,純java開發的,最新版本WebLogic Server 9.0是迄今爲止發佈的最卓越的BEA應用服務器。BEA WebLogic是用於開發、集成、部署和管理大型分佈式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。徹底遵循J2EE 1.4規範。
WebLogic與Tomcat的區別:
WebLogic更增強大。weblogic是j2ee的應用服務器(application server),包括ejb ,jsp,servlet,jms等等,全能型的。是商業軟件裏排名第一的容器(JSP、servlet、EJB等),並提供其餘如JAVA編輯等工具,是一個綜合的開發及運行環境。
WebLogic應該是J2EE Container(Web Container + EJB Container + XXX規範),而Tomcat只能算Web Container,是官方指定的JSP&Servlet容器。只實現了JSP/Servlet的相關規範,不支持EJB。不過Tomcat配合jboss和apache能夠實現j2ee應用服務器功能
2、WebLogic下載
來到Oracle的WebLogic Server主頁:
http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html
點擊Downloads:
進入Downloads界面以後,點擊Download file進行下載:
注意:
(1)別忘記點擊上面的「贊成」條款。
(2)點擊下拉框選擇下載的版本,分別爲簡版/普通和徹底版。
咱們這裏選擇下載的是Generic版本。你們能夠根據本身的須要選擇下載。
若是Oracle抽了,你們去這裏下載12.2.3的版本:
https://pan.baidu.com/share/link?shareid=2935789172&uk=1493614172&fid=1093830637966671
咱們下載完畢以後,會有一個壓縮包:
3、WebLogic安裝
將咱們下載的壓縮包解壓:
打開目錄中的Disk/install安裝目錄,找到名爲ng.cmd的腳本文件:
雙擊打開腳本文件,彈出一個黑色的控制檯:數據庫
(親測 12213版本直接在dos窗口進行安裝不會出現下面的安裝界面)apache
稍等片刻,就會出現WebLogic的安裝界面:
咱們接下來按照如下步驟進行安裝:
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「安裝」
點擊「下一步」
點擊完成,WebLogic就安裝完畢了。接下來會彈出WebLogic的配置界面。
3、WebLogic的配置
安裝完畢以後,會彈出配置窗口,咱們按照如下操做進行配置:
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「下一步」
點擊「建立」瀏覽器
點擊「下一步」
看到完成界面,就說明咱們的WebLogic的安裝與配置都已經完成了。
4、簡單操做WebLogic
找到咱們剛纔安裝的WebLogic的所在目錄:
打開\user_projects\domains\base_domain目錄:
點擊該目錄下的startWebLogic.cmd腳本,運行WebLogic。
咱們在網頁瀏覽器中輸入"http://localhost:7001/console"地址,
就能夠訪問WebLogic的控制檯了:
稍等一會以後,能夠看到登錄界面:
輸入咱們以前填寫的管理員的帳號密碼,登陸到WebLogic管理系統中:
點擊登陸以後,能夠看到管理界面:
至此,咱們的WebLogic的安裝與配置就講解完畢。安全
-------------------------------------------------------------------------------------------------------------服務器
打開咱們的Eclipse,這裏我使用的是MyEclipse2014。
在上面的選項欄中,點擊window,選擇Preferences:
以後找到MyEclipse-->Server-->WebLogic的配置選擇:
而後進行如下配置:
接下來,打開Server視圖:
能夠看到咱們的WebLogic的圖標,靜靜的躺在其它服務器中間:
這就說明咱們在Eclipse中配置WebLogic成功啦!
-------------------------------------------------------------------------------------------------------------
1、什麼是jndi數據源
JNDI是Java命名與目錄接口(Java Naming and Directory Interface),在J2EE規範中是重要的規範之一。
咱們平時開發web程序的時候,在鏈接數據庫的時候,每每會編寫一個鏈接數據庫的類,
例如鏈接Mysql的類:
package cn.edu.hpu.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DB { // 定義MySQL的數據庫驅動程序 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ; //定義mysql的數據庫鏈接地址: public static final String DBDURL = "jdbc:mysql://localhost:3306/iqweb" ; //mysql數據庫的鏈接用戶名 public static final String DBUSER = "root" ; //mysql數據庫的鏈接密碼 public static final String DBPASS = "1234" ; static{ try { Class.forName(DBDRIVER); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static Connection getConnection(){ Connection conn=null; try { conn=DriverManager.getConnection(DBDURL,DBUSER,DBPASS); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } public static void close(ResultSet rs,Statement st,Connection conn){ try { if(rs!=null){ rs.close(); } if(st!=null){ st.close(); } if(conn!=null){ conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void close(Statement st,Connection conn){ close(null,st,conn); } }
能夠看到,咱們的數據庫的驅動名,數據庫名稱,帳號和密碼都是經過「硬編碼」寫死在
程序裏的。一旦咱們的項目須要數據遷移,或者更換數據庫的時候,咱們就要中止應用,在代碼中
修改數據庫的鏈接信息,這樣作很是繁瑣和不安全。即便不更換數據庫,咱們在改變數據庫的最大
鏈接數和最小鏈接數,以及數據庫的其它配置等等,都須要在代碼中進行修改,這十分不友好。
咱們須要一種外部的數據源,來指定咱們的應用程序來連接數據庫,對此,咱們的應用程序沒必要
關心數據庫的配置,數據庫的配置交由獨立的模塊管理和配置。
近年來,Web開發中涌現了許多框架,如hibernate/Mybatis/Spring,使用他們,能夠經過
「數據庫鏈接池」來管理數據庫的連接和配置:
<!-- 配置c3p0數據源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="jdbcUrl" value="${jdbcUrl}"></property> <property name="driverClass" value="${driverClass}"></property> <property name="user" value="${user}"></property> <property name="password" value="${password}"></property> <!--初始化時獲取三個鏈接,取值應在minPoolSize與maxPoolSize之間。Default: 3 --> <property name="initialPoolSize" value="${initialPoolSize}"></property> <!--鏈接池中保留的最小鏈接數。Default: 3 --> <property name="minPoolSize" value="3"></property> <!--鏈接池中保留的最大鏈接數。Default: 15 --> <property name="maxPoolSize" value="${maxPoolSize}"></property> <!--當鏈接池中的鏈接耗盡的時候c3p0一次同時獲取的鏈接數。Default: 3 --> <property name="acquireIncrement" value="3"></property> <!--最大空閒時間,1800秒內未使用則鏈接被丟棄,若爲0則永不丟棄。Default: 0 --> <property name="maxIdleTime" value="1800"></property> </bean>
而且把數據庫配置單獨放置在porperties配置文件中:
這樣作就在應用層實現了數據庫配置信息獨立的機制。這樣會使應用程序的數據庫配置更加靈活。
而咱們的WebLogic服務器,擁有綁定Jndi數據源的功能,也就是服務器來對應用程序的數據庫配置
進行託管,應用程序只須要在其應用代碼中制定使用jndi模式連接WebLogic的數據源信息便可。
當須要修改數據庫信息的時候,根本不須要動應用程序的東西,只須要調整WebLogic的jndi數據源
中的數據庫配置信息便可。
也便是說,WebLogic的jndi機制,在服務層實現了數據庫配置信息獨立的機制。
2、新建Mysql的JNDI數據源
訪問http://localhost:7001/console/,登陸進入WebLogic控制檯主頁。
點擊左側「域結構」下的「服務」下的「數據源」選項:
選擇新建,通常數據源。
填寫數據源的名稱,JNDI名稱以及選擇數據庫類型:
選擇數據庫驅動版本:
其它配置按照默認便可:
填寫數據庫的鏈接信息:
接下來點擊測試配置,看一下是否能鏈接成功:
出現「鏈接測試成功」即表示數據庫配置沒有問題。
點擊下一步,勾選服務器。
點擊完成以後,咱們服務器端的JNDI數據源就配置完畢了。
3、應用程序引用WebLogic的jndi數據源
咱們在MyEclipse中建立一個WebProject測試工程:
咱們在src中建立一個數據庫鏈接類:
編寫該鏈接類:
package com.cn.opensource.dbConn; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; public class DatabaseConnection { //初始化上下文須要用到的工廠類 private final static String INITIAL_CONTEXT_FACTORY="weblogic.jndi.WLInitialContextFactory"; //WebLogic服務器的訪問地址 private final static String PROVIDER_URL="t3://127.0.0.1:7001"; //WebLogic服務器中的JNDI數據源名稱 private final static String MYSQL_JNDI_NAME="JNDI-MySqlDataSource"; //存儲從JNDI容器中取出來的數據源 private static DataSource dsOracle = null; private static DataSource dsMySQL = null; static { try { //初始化WebLogic Server的JNDI上下文信息 Context context = getInitialContext(); //獲取數據源對象 dsMySQL = (DataSource) context.lookup(MYSQL_JNDI_NAME); } catch (Exception e) { e.printStackTrace(); } } /** * MethodName: getInitialContext * Description: 得到WebLogic ServerJNDI初始上下文信息 * @return * @throws Exception */ private static Context getInitialContext() throws Exception { Properties properties = new Properties(); //指定工廠類 properties.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY); //指定服務器訪問地址 properties.put(Context.PROVIDER_URL, PROVIDER_URL); return new InitialContext(properties); } /** * MethodName: getMySQLConnection * Description: 獲取MySQL數據庫鏈接 * @return * @throws SQLException */ public static Connection getMySQLConnection() throws SQLException { return dsMySQL.getConnection(); } /** * MethodName: CloseConnection * Description: 關閉數據庫鏈接 * @return * @throws SQLException */ public static void Close()throws SQLException { if(dsMySQL!=null){ dsMySQL.getConnection().close(); } } }
而後,咱們建立一個Servlet,測試數據庫是否鏈接成功並取到數據:
編寫Servlet內容:
package com.cn.opensource.dbConn; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class JndiConnectionServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print("<h1>測試JNDI數據源鏈接</h1>"); Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = DatabaseConnection.getMySQLConnection(); String sql = "select * from teacher"; st = conn.createStatement(); rs = st.executeQuery(sql); int i=0; while (rs.next()) { i++; out.println("第"+i+"個教師信息"); out.println("編號:"+rs.getInt("number")); out.println("姓名:"+rs.getString("name")); out.println("性別:"+rs.getString("sex")); out.println("所屬班級:"+rs.getString("classname")); out.println("住址:"+rs.getString("address")); out.println("<br/>"); } } catch (Exception ex) { ex.printStackTrace(); } finally { try { DatabaseConnection.Close(); } catch (SQLException e) { e.printStackTrace(); } } out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
若是編譯器沒有給你自動在Web.xml中配置Servlet,別忘記本身配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>JndiConnectionServlet</servlet-name> <servlet-class>com.cn.opensource.dbConn.JndiConnectionServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>JndiConnectionServlet</servlet-name> <url-pattern>/servlet/JndiConnectionServlet</url-pattern> </servlet-mapping> </web-app>
接下來,將咱們的測試程序部署在WebLogic服務器中:
啓動服務器,訪問應用路徑,能夠看到:
打開數據庫的teacher表,數據一致
說明咱們配置的數據源鏈接成功了!
-------------------------------------------------------------------------------------------------------------
咱們以前都是使用MyEclipse的Server視窗來部署應用到WebLogic服務器上,可是這僅僅是咱們
的開發步驟,帶咱們開發完成以後,將應用部署到生產環境的時候,通常都是將War包部署至服務
器中的。接下來爲你們講解一下如何在WebLogic中部署Web應用。
第一步,打包應用程序
咱們在編譯器中,選擇將咱們開發的Web應用打包成War包:
咱們能夠在輸出路徑中看到咱們打的War包:
第二部,將War包部署到WebLogic服務器
打開WebLogic的控制檯,使用管理員帳號密碼登陸:
選擇左側的「安裝」選項,點擊右側安裝選項便可開始部署Web應用:
選擇War包所在路徑,點擊下一步:
一下步驟均按照默認配置便可:
點擊完成以後即完成了部署,從新點擊「部署」,咱們能夠看到咱們部署好的Web應用:
爲了驗證應用是否部署到WebLogic上了,咱們訪問web應用的路徑,並訪問
以前咱們寫的取出全部教師信息的Servlet:http://localhost:7001/JndiTest/servlet/JndiConnectionServlet
數據加載出來,說明咱們的Web應用部署成功!
-------------------------------------------------------------------------------------------------------------
1、建立虛擬主機
啓動WebLogic服務,登陸到WebLogic的服務控制檯:
在主界面,咱們選擇左側的選項欄中的「環境」-->「虛擬主機」選項:
點擊「新建」,進入新建虛擬主機界面:
咱們輸入主機名稱,點擊OK,咱們就能夠看到剛剛建立的虛擬主機的信息:
點擊咱們的主機名稱,進入配置,填寫綁定域名,點擊保存:
顯示以上信息,說明咱們的虛擬主機的信息保存成功。
2、修改WebLogic端口
咱們將WebLogic的默認端口7001修改成80端口。
首先打開控制檯,點擊環境-->服務器:
點擊服務器列表中的服務器名稱,進入服務器配置界面:
咱們將「監聽端口」參數由7001更改成80:
而後點擊保存。
此時咱們從新使用80端口(默認80端口不須要輸入端口號)進入WebLogic的控制檯登陸界面:
發現成功,說明咱們的端口修改爲功!
3、爲Ip配置域名映射
咱們建立虛擬機的時候填寫了一個域名,是www.JndiTest.com,實際上並無這個域名,
咱們在本地想訪問這個域名,就必須在本機的hosts配置文件中添加www.JndiTest.com域名
的IP映射信息。
hosts配置文件的路徑在C:\Windows\System32\drivers\etc下:
咱們用記事本或者其它文本編輯工具打開它,在裏面仿照上一條配置,爲咱們
的新域名配置對應的IP地址映射的信息:
咱們在瀏覽器訪問這個地址,發現是能夠的了:
訪問咱們本地的Web應用程序,也是能夠的:
注意:別忘記修改Web應用程序連接Jndi數據源的地址端口爲80