天天看點

servlet容器:jetty,Tomcat,JBoss一.幾款servlet容器對比:jetty,Tomcat,JBoss二.JBOSS相關問題解決

一.幾款servlet容器對比:jetty,Tomcat,JBoss

二.JBOSS相關問題解決

  • 1.JBOSS下載下傳安裝
  • 2.處理jboss-as-7.1.1.Final與jdk1.8及1.8以上版本的不相容問題

    并解決多個版本的jdk的切換問題

  • 3.解決啟動JBOSS的standalone.bat時端口占用沖突問題
  • 4.設定外網通路
  • 5. 添加使用者
  • 6.在eclipse-jee中配置JBoss
  • 7.在JBoss中配置mysql資料庫連接配接池

一.幾款servlet容器對比:jetty,Tomcat,JBoss

jetty VS Tomcat

https://baike.baidu.com/item/jetty/370234?fr=aladdin#2

Jetty更滿足公有雲的分布式環境的需求,而Tomcat更符合企業級環境

  • Jetty更輕量級。這是相對Tomcat而言的。

    由于Tomcat除了遵循Java Servlet規範之外,自身還擴充了大量JEE特性以滿足企業級應用的需求,是以Tomcat是較重量級的,而且配置較Jetty亦複雜許多。但對于大量普通網際網路應用而言,并不需要用到Tomcat其他進階特性,是以在這種情況下,使用Tomcat是很浪費資源的。這種劣勢放在分布式環境下,更是明顯。換成Jetty,每個應用伺服器省下那幾兆記憶體,對于大的分布式環境則是節省大量資源。而且,Jetty的輕量級也使其在處理高并發細粒度請求的場景下顯得更快速高效。

  • Jetty更靈活,展現在其可插拔性和可擴充性,更易于開發者對Jetty本身進行二次開發,定制一個适合自身需求的Web Server。

    相比之下,重量級的Tomcat原本便支援過多特性,要對其瘦身的成本遠大于豐富Jetty的成本。用自己的了解,即增肥容易減肥難。

  • 然而,當支援大規模企業級應用時,Jetty也許便需要擴充,在這場景下Tomcat便是更優的。

jboss

說實話平時做一些小的開發設計使用的一般為tomcat,jetty也早就想嘗試一下了,不都說“優雅的jetty”嗎,然而奈何學校的課設需要使用jboss,對jboss的耳聞是因為去年看了《大型分布式網站技術架構-核心原理與案例分析》《大型分布式網站技術架構-設計與實踐》這兩本書後知道了早些年的淘寶網是使用jboss中間件的。眼看着課設的日子就要來了,萬般無奈的下了個jboss,然而沒有想到的是,它貌似許久都沒有更新維護了,而且對jdk的支援貌似隻達到了1.7版本,我原本的9.0.4在jboss中根本沒法用。。。于是隻好又裝了一個1.7版的jdk,而且1.8的jdk它也是不支援的,更不要說1.9及現在的1.12了。。。

好想吐槽一下大學的課程:什麼時候可以不要這麼過時又無聊:)

二.JBOSS相關問題解決

1.JBOSS下載下傳安裝

下載下傳網址為 http://www.jboss.org/jbossas/downloads/

測試JBoss

1.運作腳本jboss7.1.1\bin\standalone.bat完成啟動。

2.通路http://127.0.0.1:8080/,出現 Welcome to AS 7通路界面,說明JBoss啟動成功

2.處理jboss-as-7.1.1.Final與jdk1.8及1.8以上版本的不相容問題

https://blog.csdn.net/tiegenZ/article/details/77881138

解決:隻能安裝小于1.8版本的jdk,例如1.7版本。

解決多個版本的jdk的切換問題

最好單獨建立JAVA_HOME環境變量,在Path中使用JAVA_HOME

這樣一來可以每次僅修改JAVA_HOME來達到jdk的切換

servlet容器:jetty,Tomcat,JBoss一.幾款servlet容器對比:jetty,Tomcat,JBoss二.JBOSS相關問題解決

3.解決啟動JBOSS的standalone.bat時端口占用沖突問題

測試JBoss

1.運作腳本D:\jboss7.1.1\bin\standalone.bat完成啟動。

2.通路http://127.0.0.1:8080/,出現 Welcome to AS 7通路界面,說明JBoss啟動成功

在運作jboss7.1.1\bin\standalone.bat出錯

錯誤如下:

JBAS014777: Services which failed to start: service jboss.serverManagement.controller.management.http: org.jboss.msc.service.StartException in service

jboss.serverManagement.controller.management.http: Address already in use: bind /127.0.0.1:9990

解決方案:

首先在不改動JBOSS啟動端口的情況下,嘗試關閉占用了該端口的windows服務:

C:\Users\lenovo>

netstat -ano | find ":9990"

TCP 127.0.0.1:9990 0.0.0.0:0 LISTENING 4100

C:\Users\lenovo>

tasklist | findstr 4100

NvNetworkService.exe 4100 Services 0 2,636 K

C:\Users\lenovo>

taskkill /pid 4100

錯誤: 無法終止 PID 為 4100 的程序。

原因: 拒絕通路。

C:\Users\lenovo>

taskkill -t /pid 4100

錯誤: 無法終止 PID 4100 (屬于 PID 836 子程序)的程序。

原因: 拒絕通路。

C:\Users\lenovo>

tasklist | findstr 836

services.exe 836 Services 0 7,652 K

svchost.exe 2836 Services 0 10,656 K

Notes:實用

taskkill

-ft

選項時需注意:pid值較小的關鍵系統程序不可以随意殺死!!!

既然無法通過殺死占用了9990端口的程序的方式修複該問題,那麼下面隻能通過修改jboss.serverManagement.controller.management的啟動端口的方式修複此問題:

  • 首先找到JBOSS的配置檔案:

    jboss7.1.1\standalone\configuration\standalone.xml

  • 打開該配置檔案,找到下面這行内容:

<socket-binding name="management-http" port="${jboss.management.http.port:9990}" inter/>

将9990端口改為一個其它未被占用的port。

C:\Users\lenovo>

netstat -ano | find ":9991"

C:\Users\lenovo>

通過上述查找可發現9991port沒有被占用,是以可将

port="${jboss.management.http.port:9990}"

中的9990改為9991.

最後成功修複該問題:

servlet容器:jetty,Tomcat,JBoss一.幾款servlet容器對比:jetty,Tomcat,JBoss二.JBOSS相關問題解決

4.設定外網通路

JBoss安裝完成後,預設隻能本地通路(即:隻有127.0.0.1/localhost或http://localhost:8080能通路),如果想讓其他人也可以通路你的網頁,需要修改JBoss的配置檔案,即修改standalone.xml,增加本機Web位址的内容。

(1). 打開JBOSS配置檔案:D:

\jboss7.1.1\standalone\configuration\standalone.xml

(2). 在

<interfaces>與</interfaces>

之間,增加一個interface節點,節點内容如下:

<!-- 設定外網通路  -->
		<interface name="any">
		   <any-ipv4-address/>
		</interface>
           

接着,修改socket-binding-group節點的default-interface屬性的為any

修改完後,重新開機JBoss7.1就可以用外網的IP來通路了。

servlet容器:jetty,Tomcat,JBoss一.幾款servlet容器對比:jetty,Tomcat,JBoss二.JBOSS相關問題解決

5. 添加使用者

添加使用者程式:

\jboss7.1.1\bin\add-user.bat

.bat:windows ,.sh:linux

通路位址:

http://127.0.0.1:<consolePort>/console

具體步驟:

通路該Web伺服器時,提示新增使用者。可在服務端執行add-user.bat(在Jboss主目錄下的bin目錄中) 來添加管理者使用者。

輕按兩下執行add-user.bat

What type of user do you wish to add?

a) Management User (mgmt-users.properties)

b) Application User (application-users.properties)

(a):

a

//輸入a後回車

Enter the details of the new user to add.

Realm (ManagementRealm) :

//回車,選用預設

Username :

admin

//填寫管理者使用者名admin

Password :

//填寫管理者密碼123456(輸入後不會被現實出來)

Re-enter Password :

The username ‘admin’ is easy to guess

Are you sure you want to add user ‘admin’ yes/no?

yes

About to add user ‘admin’ for realm ‘ManagementRealm’

Is this correct yes/no?

yes

Added user ‘admin’ to file ‘D:\jboss7.1.1\standalone\configuration\mgmt-users.properties’

Added user ‘admin’ to file ‘D:\jboss7.1.1\domain\configuration\mgmt-users.properties’

請按任意鍵繼續. . .

添加管理者後,重新啟動Jboss後通路

http://127.0.0.1:9991/console

,會彈出要求輸入使用者名和密碼的頁面,注意我在前面由于jboss console與windows中服務的端口沖突問題,修改了jboss console port為9991,其原本預設設定為9990.

servlet容器:jetty,Tomcat,JBoss一.幾款servlet容器對比:jetty,Tomcat,JBoss二.JBOSS相關問題解決
servlet容器:jetty,Tomcat,JBoss一.幾款servlet容器對比:jetty,Tomcat,JBoss二.JBOSS相關問題解決

6.在eclipse-jee中配置JBoss

為了實作在eclipse-jee中對JBoss的控制,可以将JBoss的啟動和停止添加到eclipse-jee中。啟動eclipse-jee後,進入菜單Window-> Preferences-> Server -> Runtime Environments,

點選右側的Add選項即可添加servlet容器。

Eclipse Java EE Developer Tools https://marketplace.eclipse.org/content/eclipse-java-ee-developer-tools-0

目前為止在上述網址上下載下傳eclipse-jee已經不支援配置JBoss7.1了,其支援的中間件如下:

servlet容器:jetty,Tomcat,JBoss一.幾款servlet容器對比:jetty,Tomcat,JBoss二.JBOSS相關問題解決

隻有使用老師下發的安裝包才可以配置JBoss7.1

servlet容器:jetty,Tomcat,JBoss一.幾款servlet容器對比:jetty,Tomcat,JBoss二.JBOSS相關問題解決

以上步驟完畢後,在Servers視圖内會有JBoss伺服器出現。選中JBoss7.1Runtime Server,在右鍵菜單中點選Start,JBoss伺服器開始啟動。若浏覽器可以通路http://127.0.0.1:8080/,則配置成功。

7.在JBoss中配置mysql資料庫連接配接池

  • 在D:\jboss-as-7.1.1.Final\modules\com路徑下,建立檔案夾mysql\main,并将mysql-connector-java-5.1.26-bin.jar 複制到main檔案夾下,同時建立module.xml檔案

    配置檔案 module.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <module xmlns="urn:jboss:module:1.0" name="com.mysql">

    <resources>

    <resource-root path="mysql-connector-java-5.1.26-bin.jar"/>

    </resources>

    <dependencies>

    <module name="javax.api"/>

    </dependencies>

    </module>

  • 修改standalone.xml配置檔案,其路徑為D:\jboss-as-7.1.1.Final\standalone\configuration。打開standalone.xml檔案,找到

    <datasources>

    标簽,裡面應該已經有一個預設的datasource:ExampleDS,現在加入我們的mysql的datasource:

配置檔案standalone.xml中的datasource标簽

<datasource jndi-name="java:/MySqlDS" pool-name="MySqlDS" enabled="true" use-java-context="true">

<connection-url>jdbc:mysql://localhost:3306/jbossdb</connection-url>

<driver>mysql</driver>

<security>

<user-name>root</user-name>

<password>123</password>

</security>

</datasource>

接下來,在

<datasource>...<drivers>...</drivers>...</datasource>

的drivers标簽中進行配置。

配置檔案 standalone.xml中的driver标簽

<drivers>

<driver name="mysql" module=" com.mysql ">

<driver-class>com.mysql.jdbc.Driver</driver-class>

<xa-datasource-class>

com.mysql.jdbc.jdbc2.optional.MysqlXADataSource

</xa-datasource-class>

</driver>

</drivers>