中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

幾種javaweb容器的配置備忘

1 JBOSS端口更改

1.到j(luò)boss-4.2.3.GAserverdefaultdeployjboss-web.deployer下,打開(kāi)server.xml,修改默認(rèn)的8080端口為8081.

讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、虛擬空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、江口網(wǎng)站維護(hù)、網(wǎng)站推廣。

2.然后到j(luò)boss-4.2.3.GAserverdefaultconfjboss-service.xml 修改相應(yīng)的同那個(gè)監(jiān)控軟件自帶的jboss沖突的端口.

3.然后到j(luò)boss-4.2.3.GAbin下重新運(yùn)行run.bat 即可重新啟動(dòng)了.

<Connector port="8082" address="${jboss.bind.address}" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />

參考文檔:http://chris-wang.iteye.com/blog/285668

2JBoss的兩種類(lèi)隔離機(jī)制配置說(shuō)明

EAR or WAR的類(lèi)將按照以下順序裝載:

1. WEB-INF/lib (for WARs)

2. server/default/lib下的jar包

3. tomcat的jar包server/default/deploy/jbossweb-tomcatxxx.sar,與server/default/lib將混合在一起,不區(qū)別順序。

在部署應(yīng)用到JBoss服務(wù)器時(shí),通常見(jiàn)到的問(wèn)題就是應(yīng)用所帶的jar包與容器自己的jar包版本不同導(dǎo)致的沖突,以及應(yīng)用間jar包導(dǎo)致的沖突,JBOSS提供兩種隔離機(jī)制:

1. 部署包之間的隔離

2. 覆蓋JBoss Server的類(lèi)的隔離

A部署包之間的隔離機(jī)制

對(duì)于.ear部署包,我們應(yīng)該修改jboss-app.xml如下:

<jboss-app> <loader-repository> com.example:archive=unique-archive-name </loader-repository> </jboss-app>

對(duì)于.war部署包,在jboss-web.xml中定義如下:

<jboss-web> <class-loading> <loader-repository> com.example:archive=unique-archive-name </loader-repository> </class-loading> </jboss-web>

在JBoss 4.2.1中<class-loading>不再被支持,而4.0.5兩種方式都支持,直接修改為:

<jboss-web> <loader-repository> com.example:archive=unique-archive-name </loader-repository> </jboss-web>

在.sar部署包中,在jboss-service.xml定義如下:

<server> <loader-repository> com.example:archive=unique-archive-name </loader-repository> </server>

示例中,com.example:archive=unique-archive-name代表jar倉(cāng)庫(kù)的對(duì)象名objectName ,其中,com.example可以隨意取,unique-archive-name 就用部署包的名字即可,例如com.example:archive=helloworld.sar,保證這一串唯一即可。而com.example將出現(xiàn)在JMX-Console (http://localhost:8080/jmx-console/)列出的節(jié)點(diǎn)上(每個(gè)節(jié)點(diǎn)為一個(gè)LoaderRepository domain:jar參考的域概念,其實(shí)就是一個(gè)所有jar容器倉(cāng)庫(kù)的分組概念)

對(duì)于部署包內(nèi)內(nèi)嵌了其他部署包,只有最上層的部署描述配置才起作用,例如:

.ear中包含了.sar和.war,這只有.ear中的META-INF/jboss-app.xml 中定義的隔離范圍才會(huì)起作用。

.sar中包含了.war,則只有.sar META-INF/jboss-service.xml中定義的隔離范圍才起作用

B覆蓋JBoss Server的類(lèi)的隔離

對(duì)于jboss-app.xml:

<jboss-app> <loader-repository> com.example:archive=unique-archive-name <loader-repository-config> java2ParentDelegation=false </loader-repository-config> </loader-repository> </jboss-app>

對(duì)于jboss-web.xml:

<jboss-web> <class-loading java2ClassLoadingCompliance="false"> <loader-repository> com.example:archive=unique-archive-name <loader-repository-config>java2ParentDelegation=false</loader-repository-config> </loader-repository> </class-loading> ...

jboss-service.xml:

<server> <loader-repository> com.example:archive=unique-archive-name <loader-repository-config>java2ParentDelegation=false</loader-repository-config> </loader-repository> ...

參考文檔:http://developer.51cto.com/art/201001/179092.htm

3 Jboss jar包沖突及jar加載順序 將一個(gè)完整的.war包部署到Jboss容器中,啟動(dòng)后報(bào)如下錯(cuò)誤:

15:04:48,632 ERROR [ContextLoader] Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name \'org.apache.activemq.xbean.XBeanBrokerService#0\' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.slf4j.MDC.getCopyOfContextMap()Ljava/util/Map; at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method)

$find . -name slf4j*.jar ./bin/configuration/org.eclipse.osgi/bundles/24/1/.cp/slf4j-log4j12-1.4.3.jar ./bin/configuration/org.eclipse.osgi/bundles/24/1/.cp/slf4j-api-1.4.3.jar ./server/default/deploy/configuration/org.eclipse.osgi/bundles/14/1/.cp/slf4j-log4j12-1.4.3.jar ./server/default/deploy/configuration/org.eclipse.osgi/bundles/14/1/.cp/slf4j-api-1.4.3.jar ./server/default/deploy/etl_sngps.war/WEB-INF/lib/slf4j-api-1.6.1.jar ./server/default/deploy/etl_sngps.war/WEB-INF/lib/slf4j-log4j12-1.6.1.jar ./server/default/deploy/jboss-web.deployer/configuration/org.eclipse.osgi/bundles/14/1/.cp/slf4j-log4j12-1.4.3.jar ./server/default/deploy/jboss-web.deployer/configuration/org.eclipse.osgi/bundles/14/1/.cp/slf4j-api-1.4.3.jar

查看Jboss jar加載文檔:

1) org.jboss.Main.main(String[]) 為入口.
2) main 函數(shù)創(chuàng)建一個(gè)名叫”jboss”的線(xiàn)程組, 然后創(chuàng)建一個(gè)屬于該組的線(xiàn)程, 在線(xiàn)程中執(zhí)行boot方法.
3) boot 方法首先處理main函數(shù)中的參數(shù)(及一些其它的系統(tǒng)環(huán)境設(shè)置), 接著就用系統(tǒng)的屬性創(chuàng)建了org.jboss.system.server.ServerLoader實(shí)例[new ServerLoader(props)].
4) ServerLoader 注冊(cè)Jboss相關(guān)的類(lèi)路徑, 包括XML解析器, jboss-jmx.jar, concurrent.jar及其它的一些額外的類(lèi)路徑.
這里一般都是在JBOSS_HOMElib下面的jar.
5) ServerLoader 通過(guò)load(ClassLoader)方法創(chuàng)建Jboss Server實(shí)例. 參數(shù)ClassLoader是ClassLoader parentCL = Thread.currentThread(). getContextClassLoader( )得到的當(dāng)前線(xiàn)程的類(lèi)加載器. 創(chuàng)建的Server實(shí)例是org.jboss.system.server.Server接口的實(shí)現(xiàn). load(ClassLoader)方法的細(xì)節(jié):
? 用jar包及在ServerLoader中注冊(cè)的類(lèi)路徑創(chuàng)建一個(gè)URLClassLoader的實(shí)例, 把傳入的ClassLoader作為該URLClassLoader的parent.
? Server 接口的實(shí)現(xiàn)類(lèi)由系統(tǒng)屬性 jboss.server.type決定, 默認(rèn)是 org.jboss.system.server.ServerImpl.
? URLClassLoader 通過(guò)無(wú)參構(gòu)造函數(shù)加載Server接口實(shí)現(xiàn)的實(shí)例. 在加載前把當(dāng)前線(xiàn)程的類(lèi)加載器置為該URLClassLoader, 在加載完成后再置回之前傳入的ClassLoader.
6) Server 實(shí)例用系統(tǒng)屬性進(jìn)行初始化[server.init(props)].
7) 服務(wù)起動(dòng)[server.start()]. 起動(dòng)過(guò)程的默認(rèn)實(shí)現(xiàn)如下:
? 把當(dāng)前線(xiàn)程類(lèi)型加載器置為加載該Server接口實(shí)現(xiàn)實(shí)例的ClassLoader.
? 在jboss域內(nèi), 通過(guò)MBeanServerFactory的createMBeanServer(String)方法創(chuàng)建MbeanServer實(shí)例.
? 在MBean Server上注冊(cè)ServerImpl和ServerConfigImpl兩個(gè)MBean.
? 初始化統(tǒng)一的類(lèi)加載倉(cāng)庫(kù)(unified class loader repository), 用來(lái)裝載服務(wù)器配置目錄及其它可選目錄下的jar文件. 對(duì)于每一個(gè)jar文件和類(lèi)目錄都會(huì)創(chuàng)建一個(gè)相應(yīng)的org.jboss.jmx.loading.UnifiedClassLoader實(shí)例, 并且注冊(cè)到統(tǒng)一的倉(cāng)庫(kù)中. 其中一個(gè)UnifiedClassLoader實(shí)例會(huì)被設(shè)置為當(dāng)前線(xiàn)程上下文的ClassLoader. [?: This effectively makes allUnifiedClassLoaders available through the thread context class loader.]

? 接下來(lái)創(chuàng)建org.jboss.system.ServiceController的MBean實(shí)例. ServiceController管理JBoss MBean服務(wù)的生命周期.

需要注意的是:JBOSS在加載自帶的核心JAR之后,將會(huì)優(yōu)先加載下面的兩個(gè)目錄
1、D:jbossserverdefaultlib

2、D:jbossserverdefaulttmpdeploy

但是上面三組均不在以上1 2 所指的2個(gè)目錄中。接著看......
找到如下文件,注意這個(gè)文件里面蘊(yùn)藏著jar加載的有一個(gè)規(guī)則.
jboss-4.2.3.GAserverdefaultconfxmdesc org.jboss.deployment.MainDeployer-xmbean.xml
最先加載的是后綴名為deployer目錄下應(yīng)用或者服務(wù);
250:.rar,300:-ds.xml,400:.jar,500:.war,550:.jse,650:.ear,800:.bsh
<descriptors>
<value value="250:.rar,300:-ds.xml,400:.jar,500:.war,550:.jse,650:.ear,800:.bsh"/>
</descriptors>
可以通過(guò)調(diào)整這個(gè)value來(lái)改變加載規(guī)則。
這里已經(jīng)很清楚了,上面所引爆的問(wèn)題,正是由于/jboss-web.deployer下面所用的1,4版本導(dǎo)致的。刪除后,一切正常。

參考文檔:http://blog.csdn.net/mypop/article/details/6617914

4 Windows怎么查看端口占用情況

在windows命令行窗口下執(zhí)行:

C:>netstat -aon|findstr "9050" TCP 127.0.0.1:9050 0.0.0.0:0 LISTENING 2016 C:>tasklist|findstr "2016" tor.exe 2016 Console 0 16,064 K 5 tomcat更改端口

(1)、在Tomcat安裝根目錄下的字文件夾conf中找到文件server.xml

(2)、將其用記事本程序打開(kāi),找到這段文字:

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />

將以上文字中的Connector port="8080"中的8080更改為8888即可,重新啟動(dòng)Tomcat,使用http://localhost:8888登錄,發(fā)現(xiàn)問(wèn)題已解決。

參考文檔:http://blog.sina.com.cn/s/blog_4d83777b0100fgp0.html

6tomcat修改manager

修改tomcat-users.xml文件,在其中添加管理員角色(manager),以及管理員用戶(hù)(admin)和密碼(admin),修改后如下:

<tomcat-users> <role rolename="manager"/> <user name="tomcat" password="tomcat" roles="tomcat" /> <user name="role1" password="tomcat" roles="role1" /> <user name="both" password="tomcat" roles="tomcat,role1" /> <user username="admin" password="admin" roles="manager"/> </tomcat-users>

最后,重啟tomcat,在進(jìn)入管理頁(yè)面的時(shí)候,用管理員用戶(hù)admin和密碼admin,登陸ok。

7 Tomcat 6 數(shù)據(jù)源配置

方法1:

修改$CATALINA_HOME/conf/context.xml文件,加入如下代碼:

<Context reloadable="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/dataBaseName"/> </Context> jdbc/mysql 可自己設(shè)置,dataBaseName更改為相關(guān)數(shù)據(jù)庫(kù)名

把MYSQL驅(qū)動(dòng)拷貝到TOMCAT的lib目錄(我用的是mysql-connector-java-5.1.6-bin.jar)

不必像官方文檔所說(shuō),在web應(yīng)用的web.xml中配置<resource-ref>標(biāo)簽的屬性,數(shù)據(jù)源就配置成功。

java代碼如下:

Context initCtx = new InitialContext(); javax.sql.DataSource ds = (javax.sql.DataSource)initCtx.lookup("java:comp/env/jdbc/mysql"); Connection conn = ds.getConnection(); Context元素代表一個(gè)web應(yīng)用,運(yùn)行在某個(gè)特定的虛擬主機(jī)上。你可以在一個(gè)Host元素中嵌套任意多的Context元素。每個(gè)Context的路徑必須是惟一的,由path屬性定義。

若針對(duì)某個(gè)WEB應(yīng)用配置數(shù)據(jù)源,可在$CATALINA_HOME/conf/server.xml文件中的<Host></Host>標(biāo)簽之間加入如下的Context代碼:

<Context path="/path" docBase="systemPath" reloadable="true"> <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/dataBaseName"/> </Context>

方法2:

我們可以把 Context 片斷以<path>.xml保存在%CATALINA%/conf/<ENGINE>/<HOST>/文件下面。比如:我通過(guò)URL訪(fǎng)問(wèn)的應(yīng)用的路徑是:[url]http://localhost/test/[/url],那么,Context的文件名稱(chēng)為test.xml。把text.xml保存到%CATALINA%/conf/Catalina/localhost下面。其中:

%CATALINA%這是Tomcat的根目錄 <ENGINE>在server.xml里可以通過(guò)<ENGINE> 標(biāo)簽的name屬性看到,Catalina是Tomcat的默認(rèn)名稱(chēng) localhost是虛擬主機(jī)的名稱(chēng)了。這個(gè)在server.xml里也可以查看得到。 另外,還應(yīng)該在我們應(yīng)用的web.xml(也就不是tomcat根目錄下的conf/web.xml)里面加入資源引用:(好像不加也可以吧。Tomcat的文檔里面都添加了。)

<resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/TomcatHibernate</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>

%CATALINA%/webapps/test/WEB-INF/web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> <web-app 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 [url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]" version="2.5"> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/TomcatHibernate</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app> %CATALINA%/conf/Catalina/localhost/test.xml

<Context> <Resource name="jdbc/TomcatHibernate" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="admin" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/hibernate"/> </Context>

%CATALINA%/webapps/test/test.jsp

<%@ page language="java" pageEncoding="GB2312"%> <%@ page import="java.sql.*, javax.sql.*, javax.naming.*" %> <% Connection conn = null; String url = "jdbc:mysql://localhost:3306/hibernate"; String user = "root"; String password = "admin"; try { InitialContext ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/TomcatHibernate"); conn = ds.getConnection(); if(conn != null) { out.println("數(shù)據(jù)源jdbc/hibernate配置成功!"); } } catch(Exception e) { out.println("數(shù)據(jù)源jdbc/hibernate配置失敗!" + e); } finally { if(conn != null) conn.close(); } %>

這種解決方法的好處是:Context可以獨(dú)立配置,不用修改Tomcat默認(rèn)的server.xml context.xml等。

參考文檔:http://jetshi0125.blog.51cto.com/392919/110769/

8 TOMCAT6全局?jǐn)?shù)據(jù)源的配置

1、在TOMCAT_HOME/conf/server.xml中的<GlobalNamingResources>的節(jié)點(diǎn)中添加如下內(nèi)容:

<Resource name="jdbc/bn" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="1000" username="sa" password="654321" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://127.0.0.1:1433;databaseName=testDB"/>

以上為MSSQLSERVER數(shù)據(jù)庫(kù),url為數(shù)據(jù)連接地址,請(qǐng)據(jù)自己IP地址修改

2、對(duì)于全局?jǐn)?shù)據(jù)源的引用,在TOMCAT_HOME/conf/context.xml中添加如下內(nèi)容:

<ResourceLink name="jdbc/TestDB" global="jdbc/TestDB" type="javax.sql.DataSource"/> 3 使用的代碼如下:

private void initDAO() { try { Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); DataSource ds = (DataSource) envCtx.lookup("jdbc/bn"); conn = ds.getConnection(); } catch(Exception e) { e.printStackTrace(); } } 如果是使用 Spring HibernateDaoSupport

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/jdbc/bn</value> </property> </bean>

參考文檔:http://blog.csdn.net/gl74gs48/article/details/1832585

總結(jié)一下,這里主要介紹了集中關(guān)于jboss相關(guān)配置及類(lèi)加載的內(nèi)容。后期填加些tomcat的相關(guān)內(nèi)容。

分享題目:幾種javaweb容器的配置備忘
URL分享:http://www.rwnh.cn/article24/cgcgce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)ChatGPT、移動(dòng)網(wǎng)站建設(shè)網(wǎng)站營(yíng)銷(xiāo)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
清丰县| 唐河县| 和平区| 绥阳县| 晋中市| 吐鲁番市| 合山市| 涡阳县| 平昌县| 营口市| 姜堰市| 白城市| 安溪县| 南城县| 镶黄旗| 瑞安市| 镇坪县| 衡南县| 福建省| 南华县| 灵宝市| 色达县| 南澳县| 赤水市| 邹平县| 营山县| 凤阳县| 阳山县| 红桥区| 霞浦县| 祁门县| 咸丰县| 喀喇沁旗| 红桥区| 仁寿县| 荣昌县| 丹棱县| 尉犁县| 肇庆市| 昭觉县| 濮阳市|