Spring系列-基礎篇(3)-搭建簡易的Tomcat開發環境

背景介紹

項目上成員已經開始使用Spring MVC或Spring Boot寫後臺接口,但是由於原有環境的一些限制,使得在實際開發時,會浪費很多時間在編程以外的事情上。
項目上使用的應用服務器是WebLogic,是一個功能很強大的重量級服務器。我們開發使用的IDE是IntelliJ IDEA,在本地編碼階段,如果搭配本地的WebLogic進行代碼的調試、測試,是一件比較麻煩的事。首先本地運行一次要很長時間,而且DeBug模式很不穩定,這樣很大大影響開發的效率。本地編碼時,我還是更傾向於搭配輕量級的Tomcat進行開發,等上線再部署在WebLogic上。
這時遇到了問題,我們之前基於WebLogic上數據源開發的一些工具jar包,在本地Tomcat上運行不了。如果要解決這個問題,就免不了要修改一些環境配置。既然Tomcat是輕量級應用服務器,我們能不能把配置好環境的Tomcat放在雲上,然後本地的IDE連接遠程的Tomcat進行代碼調試。甚至於我們開發團隊內部都不用安裝本地的Tomcat了,在編碼階段共用一個遠程Tomcat服務器。
接下來,我們先解決問題,再實現想法。

安裝Tomcat

jdk安裝配置

安裝Tomcat之前,需要先保證環境中已經安裝配置了jdk。如果jdk已安裝,可跳過該步驟。

下載安裝包

在Oracle的官網:http://www.oracle.com/technet... 下載對應的JDK包.當前我因爲是64位的CentOS,所以下載的爲 jdk-8u181-linux-x64.tar.gz。

clipboard.png

我們可以將光標放置在該標紅區域,右鍵複製下載鏈接,然後在linux服務器上使用 wget 下載到 /u01/install 目錄

[root@Kerry install]# wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz

安裝jdk

#創建 /u01/java 目錄
[root@Kerry install]# cd /u01/
[root@Kerry u01]# mkdir java
[root@Kerry u01]# cp /u01/install/jdk-8u181-linux-x64.tar.gz  /u01/java
[root@Kerry u01]# cd /u01/java
[root@Kerry java]# tar -zxvf jdk-8u181-linux-x64.tar.gz

配置環境變量

[root@Kerry java]# vim /etc/profile

進入對 /etc/profile 文本的編輯模式。在最下面進行如下設置,其中 jdk需要改成自己對應的版本:

#set java enviroment
JAVA_HOME=/u01/java/jdk1.8.0_181
JRE_HOME=/u01/java/jdk1.8.0_181/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

保存退出,然後編譯該配置文件,進行驗證

[root@Kerry java]# source /etc/profile
[root@Kerry java]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

說明安裝成功

Tomcat安裝

下載安裝包

在Tomcat官網http://tomcat.apache.org/ ,我下載的是Tomcat9。同樣是找到需要下載的安裝包,右鍵複製下載鏈接,然後使用 wget 下載。

[root@Kerry install]# wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz

clipboard.png

安裝Tomcat和驗證

#將tomcat安裝包解壓在 /u01下,生成 apache-tomcat-9.0.12 文件夾
[root@Kerry install]# tar zxvf apache-tomcat-9.0.12.tar.gz -C /u01

clipboard.png

開啓和關閉Tomcat

#進入 bin/目錄
[root@Kerry u01]# cd /u01/apache-tomcat-9.0.12/bin/
#開啓
[root@Kerry bin]# ./startup.sh 
#關閉
[root@Kerry bin]# ./shutdown.sh 

在服務器(10.1.11.70)上通過 ./startup.sh 開啓Tomcat,默認分配的訪問端口是8080
然後可以本地瀏覽器上訪問 http://10.1.11.70:8080/ ,正常的話會出現熟悉的tomcat管理界面。如果本地訪問不了,查看服務器上是不是沒有開放該端口的流入權限。

配置、使用數據源

添加數據源

我們需要在現有的Tomcat服務器上配置數據源 jdbc/DBUtilsDS。

# 修改 conf/server.xml文件,配置數據源 
[root@ohsdev1 conf]# vim server.xml
# 修改 conf/context.xml文件,配置數據源 
[root@ohsdev1 conf]# vim context.xml
#在server.xml和context.xml中加的數據源配置如下:
<Resource 
    name="jdbc/DBUtilsDS"
    auth="Container" 
    type="javax.sql.DataSource"
    factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
    maxActive="100" 
    maxIdle="30" 
    maxWait="10000"
    username="username" 
    password="password"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:省略"/>

1、server.xml

clipboard.png

2、context.xml

clipboard.png

導入數據源依賴驅動

在 lib 目錄中導入數據源所依賴的驅動jar包,例如:

  1. mysql(mysql-connector-java-5.0.8.jar)
  2. oracle(ojdbc7.jar)
  3. sql server(sqljdbc4.jar)

不同Tomcat或JDK的版本,對驅動jar包的版本也是有限制的,本次環境 Tomcat9+JDK1.8,我使用的就是Oracle連接驅動就是 ojdbc7.jar。

調用數據源(與WebLogic的區別)

使用Spring boot寫了測試的接口,Controller部分代碼如下:

public class TestController {

    @RequestMapping(value = "/hello")
    public String hello(){
        return "Hello!Spring boot!";
    }

    @RequestMapping(value = "/name")
    public String name(){
        String result="連接失敗!";
        try {
            InitialContext ctx = new InitialContext();
          //  DataSource ds = (DataSource) ctx.lookup("jdbc/DBUtilsDS");
           DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/DBUtilsDS");
            Connection conn = ds.getConnection();
            result="連接成功!"+conn;
        } catch (Exception e) {
           e.printStackTrace();
        }
//       String result=  DBUtil.invokeFunction("fnd_common_pkg.get_fnd_emp_displayname","u2000");
        return result;
    }

本章中,我們配置的數據源是 jdbc/DBUtilsDS 。

  1. 如果要獲取WebLogic環境中的該數據源,可以直接使用:lookup("jdbc/DBUtilsDS")
  2. 但如果要獲取Tomcat環境中的該數據源,就要用:lookup("java:comp/env/jdbc/DBUtilsDS")。

Tomcat 訪問數據源需要加 java:comp/env的前綴,因爲Tomcat本身並不具備提供數據源的能力,它需要藉助其他的開源數據源(如DBCP)類實現。

IDEA配置遠程Tomcat

在IntelliJ IDEA上的配置

1、創建 Tomcat Server(Remote)

clipboard.png

2、配置 Ip、Port、Type,然後進入配置 Host的界面

clipboard.png
3、新建一個服務器連接信息

clipboard.png

4、配置服務器連接信息

clipboard.png
5、選擇剛剛創建的服務器連接配置,並配置staging

clipboard.png
6、添加部署程序(推薦使用exploded)

clipboard.png

配置遠程部署

根據以上配置點擊“運行”,會報錯連接不上 http://10.1.11.70:1099

clipboard.png
我們在本地使用 telnet 10.1.11.70 1099 ,發現連接不上,這時發現服務器端的配置1099端口的進程並沒有運行。

[root@ohsdev1 bin]# vi catalina.sh
#加上以下配置
export CATALINA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=10.1.11.70"

export JAVA_OPTS="-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

clipboard.png
其中的1099號端口,你在配置前需要檢查下,是否被佔用,如果被佔用,你需要換個其他端口(IDEA中監聽的端口也要隨着改變)。
如上,服務端的配置基本上就ok,現在需要啓動了,之前,我們啓動tomcat的腳本可能是startup.sh,現在我們需要遠程部署,啓動腳本是catalina.sh。

#在 /u03/apache-tomcat-9.0.12目錄執行啓動腳本
[root@ohsdev1 apache-tomcat-9.0.12]# bin/catalina.sh run
#如果要關閉 bin/catalina.sh stop

結果返回日誌,啓動Tomcat成功。

驗證遠程部署

  • 本地瀏覽器訪問 http://10.1.11.70:8080/ 可以查看到tomcat管理頁面;
  • 本地再使用 telnet 10.1.11.70 1099 ,此時可以訪問;
  • 本地IDEA 點擊運行可以正常運行,連接到遠程Tomcat。

訪問 http://10.1.11.70:8080/springboot-demo/name 可以正常運行本地IDEA中的程序,通過jdbc/DBUtilsDS數據源訪問數據庫返回信息。

在/u03/apache-tomcat-9.0.12/logs 目錄還可以查看Tomcat實時運行日誌

[root@ohsdev1 logs]# tail -500f catalina.out

配置遠程調試

雖然上述可以做到,本地代碼直接部署到遠程Tomcat,但是對於日常開發來說,我們更希望能夠支持在遠程Tomcat上進行調試。
我們再打開之前在IDEA上配remote tomcat的地方,然後在選擇下圖Debug時自動生成如下信息,需要將該信息複製到遠程服務器的catalina.sh文件中。但很明顯遠程服務器上是不存在D:IntelliJ_IDEAlibrtdebugger-agent.jar等

clipboard.png
我們需要將下圖中標紅處的勾去除,然後再返回剛剛的Debug處,就沒有了本地配置文件了。

clipboard.png

clipboard.png
現在,我們複製Debug生成的這串命令,在服務器上的 bin/catalina.sh文件中加上

CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=50839,suspend=n,server=y"

clipboard.png
然後回到 bin 目錄執行下列命令,開啓tomcat和監聽端口:

[root@ohsdev1 bin]# ./catalina.sh start

這時回到 IDEA ,點擊Debug運行代碼,等沒問題後,在瀏覽器中訪問http://10.1.11.70:8080/springbootDemo/name ,代碼進入斷點

clipboard.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章