WildFly簡介:
wildFly是一款服務器,和tomcat一樣,不過事jboss服務器的as版本罷了,相比於Jboss的EPA版本就比較繁重,所以有了這個Jboss服務器的輕便版本。至於什麼時候獨立出來的版本,之類的我就不給你扯淡了。
WildFly目錄介紹:
- appclient 裏面是一些默認的配置 服務器日誌的配置等
- bin常規bin目錄裏面就是可以執行的腳本文件 比如./standalone.sh 就可以啓動服務器了
- docs就是服務器的基礎文件
- domain 服務器啓動的方式有兩種一種是standalone 另外一種就是這個domain這個是分佈式的啓動
- modules這裏面配置了wildfly啓動時要加載的module 後面詳細介紹一下
- standalone wildfly啓動的另外一種方式,裏面放置了相關的配置
- welcome-content 這裏面是wildfly啓動之後一些默認的顯示頁面的文件
- jboss-modules.jar這個jar主要在wildfly啓動的時候加載相關的jar文件 後面做詳解
bin目錄下有很多腳本文件,想啓動wildfly直接執行./standalone.sh(linux環境下) 或者./standalone.bat(windows環境下)
對應的會加載standalone文件夾下面的配置文件,默認加載standalone.xml(可以修改啓動腳本,修改默認配置文件爲別的)
當然也可以在執行啓動腳本的時候指定配置文件,同時也可以指定環境變量配置和系統屬性配置格式如下
./standalone.sh --server-config=standalone-full.xml -Dorg.kie.server.id=first-kie-server
上面有不同的standalone配置文件,從文件命名基本就可以知道配置文件支持什麼樣的特性了。如果看不出來,那你可得學聰明點,至於詳細的內容配置看下面:
Wildfly 配置文件詳解:
<server xmlns="urn:jboss:domain:8.0">
<extensions>
<extension module="org.jboss.as.clustering.infinispan"/>
</extensions>
<system-properties>
<property name="org.kie.server.id" value="sample-server"/>
</system-properties>
<management>
<security-realms><security-realm name="ManagementRealm"></security-realms>
<audit-log></audit-log>
<management-interfaces></management-interfaces>
<access-control provider="simple"></access-control>
</management>
<profile>
<subsystem xmlns="urn:jboss:domain:datasources:5.0"></subsystem>
</profile>
<interfaces>
<interface name="management">
<any-address/>
</interface>
</interfaces>
<socket-binding-group name="standard-sockets" >
<socket-binding name="management-http"/>
</socket-binding-group>
</server>
配置文件的結構大致如上面所示:
excetion是拓展模塊:配置的module就是前面說的modules文件夾下面配置的module
System-property配置的是系統變量
Management就是管理模塊
<security-realm name="ManagementRealm"> 配置的是wildfly的管理模塊,可以指定存儲着用戶信息的文件的路徑地址
<security-realm name="ApplicationRealm"> 配置的是應用的管理模塊,可以指定存儲着用戶信息的文件路徑地址
profile配置一些子系統信息,包括數據源 熱部署所需要的scanner等,配置了scanner就會自動掃描對應監控的文件的配置,從而不用重啓wildfly就會自動加載新配置:
<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>
</subsystem>
interfaces 配置的是可以訪問該服務器ip
socket-binding-group配置的是對應模塊監聽的端口,
Wildfly的modules介紹:
我們都知道,java一直以來加載class文件和各種jar的資源都是通過classpath,這樣會造成很多問題,比如下面的問題
- 一個大的項目中,有的classpath當中的資源被加載後根本不會被用到,就會造成系統的資源浪費
- 同一個classpath當中的資源,可能包含多個不同版本的同一個資源,這就造成了版本衝突,可能會導致整個項目無法運行並且很難進行排錯,因爲我們的項目可能很大,在成百上千個jar中找到衝突,比火箭隊奪冠都難
針對這些問題,Jboss 都從設計上面給出瞭解決方案:
- 通過使用Module.xml描述定義模塊,在這個描述文件中要包含模塊的名字,包括哪些資源等,一般一個模塊對應一個jar文件,也可以包含多個jar或其他資源,這些資源的版本號,以及模塊之間的依賴關係
- 每一個模塊都可以實時地加載和卸載,這樣做的好處,首先是資源方面的節省,只有需要的模塊纔會被加載(這一點是通過在配置文件module.xml中定義的模塊之間的依賴關係來實現的),這一方式同時還帶來的好處:能提升整個系統的加載速度
WildFly Modules定義:
wildFly Modules是一個適用於java模塊化類加載以及執行環境的實現,傳統的java加載類 是通過類加載器一個個加載類,現在講一個jar文件定義成一個module,該module僅鏈接依賴的其他module,而不再以來其他任何資源。Jboss module 實現了一個線程安全的,快速的高併發的類加載器委派模型,再加上一個可拓展的模塊解析引擎,形成一個獨特的,簡單的,強大的應用程序執行和分佈系統。
WildFly Modules被設計爲能夠和現有的library或者application一起工作而不需要任何的修改,因爲它簡單的命名策略和解析策略不想OSGi,WildFly Modules 並沒有實現一個容器,而是一個瘦的啓動包裝器,在一個模塊化環境執行一個應用。這時你的應用接管控制權,模塊化則準備好在需要時裝載和鏈接模塊,此外,只有當一個模塊被依賴的時候,他纔會被裝載,並不會爲了解析而裝載,也就是說,模塊化應用程序的性能僅依賴於實際就是用的模塊數(並在模塊被使用的時候),而不是系統中的模塊總數目,模塊可以被用戶隨時裝載。
WildFly Moduls的使用:
一個模塊化程序使用以下命令啓動:
java -jar jboss-modules.jar -mp path/to/modules my.main.module.name
在模塊路徑(-mp)中需要指定默認模塊加載器需要搜素加載模塊的根目錄。my.main.module.name 指定要運行的模塊名稱。
下面看下module.xml的內容
<?xml version="1.0" encoding="UTF-8"?>
<module name="com.google.guava" xmlns="urn:jboss:module:1.5">
<properties>
<property name="jboss.api" value="private"/>
</properties>
<resources>
<resource-root path="guava-25.0-jre.jar"/>
</resources>
<dependencies>
</dependencies>
</module>
在jboss-moduels.jar裏有一個schema文件來定義模塊描述符的格式,因此集成到你喜歡的IDE中會很容易。JBoss Moduels提供了很多擴展的功能去嚴格控制什麼java包是“exported"或者“imported',所以你可以從你的 Jar文件裏選擇性的不包含一些資源(這樣使用預打包的jar文件時將變得更爲簡單)。
wildfly的4種部署方式:
- 管理頁面部署
管理頁面控制檯添加,和tomcat 的控制檯添加類似,此處省略
- 命令行部署
進入主目錄裏面的/bin目錄下,有個jboss-cli.sh 執行這個腳本,然後deploy你要部署的文件
jboss-cli.sh
deploy /xxxx/xxxx/xxx.jar 部署
undeploy /xxxx/xxxx/xxx.jar 卸載
- Maven Plugin(jboss-as-maven-plugin)
在你的項目的pom.xml文件裏添加下面的依賴:
<plugin>
<groupId>org.jboss.as.plugins</groupId>
<artifactId>jboss-as-maven-plugin</artifactId>
<version>7.3.Final</version>
</plugin
使用 mvn jboss-as:deploy 進行部署
使用mvn jboss-as:undeploy 進行卸載
- 複製
就是將你的jar或者war文件複製到standalone/deployments/目錄下
執行wildfly主目錄中bin目錄下啓動腳本standalone.sh(bat)
wildfly服務器啓動,如果啓動了訪問不了 啓動的時候,就在standalone.sh 後面添加 -b 0.0.0.0
變成下面的 ./standalone.sh -b 0.0.0.0
參考鏈接如下:
https://blog.csdn.net/kylinsoong/article/details/17302241