項目上成員已經開始使用Spring MVC或Spring Boot寫後臺接口,可是因爲原有環境的一些限制,使得在實際開發時,會浪費不少時間在編程之外的事情上。
項目上使用的應用服務器是WebLogic,是一個功能很強大的重量級服務器。咱們開發使用的IDE是IntelliJ IDEA,在本地編碼階段,若是搭配本地的WebLogic進行代碼的調試、測試,是一件比較麻煩的事。首先本地運行一次要很長時間,並且DeBug模式很不穩定,這樣很大大影響開發的效率。本地編碼時,我仍是更傾向於搭配輕量級的Tomcat進行開發,等上線再部署在WebLogic上。
這時遇到了問題,咱們以前基於WebLogic上數據源開發的一些工具jar包,在本地Tomcat上運行不了。若是要解決這個問題,就免不了要修改一些環境配置。既然Tomcat是輕量級應用服務器,咱們能不能把配置好環境的Tomcat放在雲上,而後本地的IDE鏈接遠程的Tomcat進行代碼調試。甚至於咱們開發團隊內部都不用安裝本地的Tomcat了,在編碼階段共用一個遠程Tomcat服務器。
接下來,咱們先解決問題,再實現想法。html
安裝Tomcat以前,須要先保證環境中已經安裝配置了jdk。若是jdk已安裝,可跳過該步驟。java
在Oracle的官網:http://www.oracle.com/technet... 下載對應的JDK包.當前我由於是64位的CentOS,因此下載的爲 jdk-8u181-linux-x64.tar.gz。mysql
咱們能夠將光標放置在該標紅區域,右鍵複製下載連接,而後在linux服務器上使用 wget 下載到 /u01/install 目錄linux
[root@Kerry install]# wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz
#建立 /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須要改爲本身對應的版本:spring
#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
保存退出,而後編譯該配置文件,進行驗證sql
[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官網http://tomcat.apache.org/ ,我下載的是Tomcat9。一樣是找到須要下載的安裝包,右鍵複製下載連接,而後使用 wget 下載。apache
[root@Kerry install]# wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz
#將tomcat安裝包解壓在 /u01下,生成 apache-tomcat-9.0.12 文件夾 [root@Kerry install]# tar zxvf apache-tomcat-9.0.12.tar.gz -C /u01
開啓和關閉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管理界面。若是本地訪問不了,查看服務器上是否是沒有開放該端口的流入權限。vim
咱們須要在現有的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:省略"/>
一、server.xml
二、context.xml
在 lib 目錄中導入數據源所依賴的驅動jar包,例如:
不一樣Tomcat或JDK的版本,對驅動jar包的版本也是有限制的,本次環境 Tomcat9+JDK1.8,我使用的就是Oracle鏈接驅動就是 ojdbc7.jar。
使用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 。
Tomcat 訪問數據源須要加 java:comp/env的前綴,由於Tomcat自己並不具有提供數據源的能力,它須要藉助其餘的開源數據源(如DBCP)類實現。
一、建立 Tomcat Server(Remote)
二、配置 Ip、Port、Type,而後進入配置 Host的界面
三、新建一個服務器鏈接信息
四、配置服務器鏈接信息
五、選擇剛剛建立的服務器鏈接配置,並配置staging
六、添加部署程序(推薦使用exploded)
根據以上配置點擊「運行」,會報錯鏈接不上 http://10.1.11.70:1099
咱們在本地使用 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"
其中的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/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等
咱們須要將下圖中標紅處的勾去除,而後再返回剛剛的Debug處,就沒有了本地配置文件了。
如今,咱們複製Debug生成的這串命令,在服務器上的 bin/catalina.sh文件中加上
CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=50839,suspend=n,server=y"
而後回到 bin 目錄執行下列命令,開啓tomcat和監聽端口:
[root@ohsdev1 bin]# ./catalina.sh start
這時回到 IDEA ,點擊Debug運行代碼,等沒問題後,在瀏覽器中訪問http://10.1.11.70:8080/springbootDemo/name ,代碼進入斷點