1.到jboss-4.2.3.GA\server\default\deploy\jboss-web.deployer下,打開server.xml,修改默認的8080端口爲8081. html
2.而後到jboss-4.2.3.GA\server\default\conf\jboss-service.xml 修改相應的同那個監控軟件自帶的jboss衝突的端口. java
3.而後到jboss-4.2.3.GA\bin下從新運行run.bat 便可從新啓動了. mysql
<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 web
EAR or WAR的類將按照如下順序裝載: spring
1. WEB-INF/lib (for WARs) sql
2. server/default/lib下的jar包 shell
3. tomcat的jar包server/default/deploy/jbossweb-tomcatxxx.sar,與server/default/lib將混合在一塊兒,不區別順序。 數據庫
在部署應用到JBoss服務器時,一般見到的問題就是應用所帶的jar包與容器本身的jar包版本不一樣致使的衝突,以及應用間jar包致使的衝突,JBOSS提供兩種隔離機制: apache
1. 部署包之間的隔離 windows
2. 覆蓋JBoss Server的類的隔離
A部署包之間的隔離機制
對於.ear部署包,咱們應該修改jboss-app.xml以下:
<jboss-app> <loader-repository> com.example:archive=unique-archive-name </loader-repository> </jboss-app>
對於.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倉庫的對象名objectName ,其中,com.example能夠隨意取,unique-archive-name 就用部署包的名字便可,例如com.example:archive=helloworld.sar,保證這一串惟一便可。而com.example將出如今JMX-Console (http://localhost:8080/jmx-console/)列出的節點上(每一個節點爲一個LoaderRepository domain:jar參考的域概念,其實就是一個全部jar容器倉庫的分組概念)
對於部署包內內嵌了其餘部署包,只有最上層的部署描述配置才起做用,例如:
.ear中包含了.sar和.war,這隻有.ear中的META-INF/jboss-app.xml 中定義的隔離範圍纔會起做用。
.sar中包含了.war,則只有.sar META-INF/jboss-service.xml中定義的隔離範圍才起做用
B 覆蓋JBoss Server的類的隔離
對於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>
對於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
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加載文檔:
? 接下來建立org.jboss.system.ServiceController的MBean實例. ServiceController管理JBoss MBean服務的生命週期.
二、D:\jboss\server\default\tmp\deploy
參考文檔:http://blog.csdn.net/mypop/article/details/6617914
在windows命令行窗口下執行:
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
(1)、在Tomcat安裝根目錄下的字文件夾conf中找到文件server.xml
(2)、將其用記事本程序打開,找到這段文字:
<!-- 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便可,從新啓動Tomcat,使用http://localhost:8888登陸,發現問題已解決。
參考文檔:http://blog.sina.com.cn/s/blog_4d83777b0100fgp0.html
修改tomcat-users.xml文件,在其中添加管理員角色(manager),以及管理員用戶(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,在進入管理頁面的時候,用管理員用戶admin和密碼admin,登錄ok。
方法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 可本身設置,dataBaseName 更改成相關數據庫名
沒必要像官方文檔所說,在web應用的web.xml中配置<resource-ref>標籤的屬性,數據源就配置成功。
java代碼以下:
Context initCtx = new InitialContext(); javax.sql.DataSource ds = (javax.sql.DataSource)initCtx.lookup("java:comp/env/jdbc/mysql"); Connection conn = ds.getConnection();Context元素表明一個web應用,運行在某個特定的虛擬主機上。你能夠在一個Host元素中嵌套任意多的Context元素。每一個Context的路徑必須是唯一的,由path屬性定義。
若針對某個WEB應用配置數據源,可在$CATALINA_HOME/conf/server.xml文件中的<Host></Host>標籤之間加入以下的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>/文件下面。好比:我經過URL訪問的應用的路徑是:[url]http://localhost/test/[/url],那麼,Context的文件名稱爲test.xml。把text.xml保存到%CATALINA%/conf/Catalina/localhost下面。其中:
<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("數據源jdbc/hibernate配置成功!"); } } catch(Exception e) { out.println("數據源jdbc/hibernate配置失敗!" + e); } finally { if(conn != null) conn.close(); } %>
這種解決方法的好處是:Context能夠獨立配置,不用修改Tomcat默認的server.xml context.xml等。
參考文檔:http://jetshi0125.blog.51cto.com/392919/110769/
一、在TOMCAT_HOME/conf/server.xml中的<GlobalNamingResources>的節點中添加以下內容:
<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數據庫,url爲數據鏈接地址,請據本身IP地址修改
二、 對於全局數據源的引用,在TOMCAT_HOME/conf/context.xml中添加以下內容:
<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
總結一下,這裏主要介紹了集中關於jboss相關配置及類加載的內容。後期填加些tomcat的相關內容。