文件 | 修改描述 |
---|---|
$JBOSS_SERVER_HOME/deploy/oracle-ds.xml | oracle数据源配置见内容五 |
$JBOSS_SERVER_HOME/conf/login-config.xml | 修改认证配置,包含jmx-console登录验证,web-console登录验证,数据库连接验证 等等 |
$JBOSS_SERVER_HOME/conf/jboss-service.xml | jboss的核心服务配置(MBean服务),包括日志、安全性、JNDI等,我们主要修改了服务组件的端口配置,如:NamingService(Port,RmiPort),WebService(port),PooledInvoker(ServerBindPort) |
$JBOSS_SERVER_HOME/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml | 修改该文件解决log4j与jboss的冲突 详细描述见下文 解决log4j与jboss的冲突 |
$JBOSS_SERVER_HOME/conf/props/jmx-console-users.properties | 定义了JMX console jbooss的登录用户名、密码 |
$JBOSS_SERVER_HOME/deploy/jmx-console.war/WEB-INF/jboss-web.xml | JMX Console jboss 安全配置 详细描述见下文Jboss 安全配置 |
$JBOSS_SERVER_HOME/deploy/jmx-console.war/WEB-INF/web.xml | JMX Console jboss 安全配置 详细描述见下文Jboss 安全配置 |
$JBOSS_SERVER_HOME/deploy/jbossweb-tomcat55.sar/conf/web.xml | 为了不在http header暴露jboss(X-Powered-By)相关版本信息,在该文件中 注释了CommonHeadersFilter |
$JBOSS_SERVER_HOME/deploy/jbossweb-tomcat55.sar/server.xml | 在该文件中可以修改JBoss HTTP连接端口和JBoss AJP所监听的端口 |
二,JBoss的安全配置
由于jboss默认情况下已经配置了以下服务:
JMX Console jboss
Web Console
为了安全起见,需要对用户进行授权访问。默认情况下, 无需授权可以访问。
1,JMX Console jboss 安全配置
A)找到%JBOSS_HOME%/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml文件,根据说明,去掉注释。如下:
<jboss-web>
<security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web>
B)找到%JBOSS_HOME%/server/default/deploy/jmx-console.war/WEB-INF/web.xml,找到security-constraint节点,根据说明,取消注释。 如下:
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the role JBossAdmin to access the HTML JMX console web application </description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
C)在A步骤中的jmx-console安全域和B步骤中的运行角色JBossAdmin都是在login-config.xml中配置,在%JBOSS_HOME%/server/default/conf/login-config.xml中可以找到以下配置:
<application-policy name = "jmx-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag = "required">
<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
</login-module>
</authentication>
</application-policy>
文件%JBOSS_SERVER_HOME%/conf/props/jmx-console-users.properties定义了用户名、密码;%JBOSS_SERVER_HOME%/conf/props/jmx- console-roles.properties定义了用户所属角色。
2,WEB-CONSOLE的安全配置
A) 找到%JBOSS_SERVER_HOME%/deploy/ management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml文件,根据说明,去掉注释。如下:
<jboss-web>
<security-domain>java:/jaas/web-console</security-domain>
<depends>jboss.admin:service=PluginManager</depends>
</jboss-web>
B) 与jboss-web.xml同级目录下还有一个文件web.xml,找到其中的<security-constraint></security-constraint>节点,根据说明,取消注释。
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the role JBossAdmin to access the HTML JMX console web application </description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
C)在A步骤中的web-console安全域和B步骤中的运行角色JBossAdmin都是在login-config.xml中配置,在%JBOSS_HOME%/server/default/conf/login-config.xml中可以找到以下配置:
<application-policy name = "web-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag = "required">
<module-option name="usersProperties">web-console-users.properties</module-option>
<module-option name="rolesProperties">web-console-roles.properties</module-option>
</login-module>
</authentication>
</application-policy>
在%JBOSS_SERVER_HOME%/deploy/ management/console-mgr.sar/web-console.war/目录的classes文件夹下找到web-console- users.properties和web-console-roles.properties两个文件分别定义用户密码以及角色.
三,解决log4j与jboss的冲突
在使用JBoss时,经常碰到一些冲突,如自己配置的log4j文件无效,系统抛出 org.jboss.logging.util.OnlyOnceErrorHandlerobject is not assignable to a org.apache.log4j.spi.ErrorHandler variable异常等.
解决jboss和log4j冲突的配置如下:
A)找到%jboss_server_home%/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml文件,修改如下:
<attribute name="Java2ClassLoadingCompliance">false</attribute>
<attribute name="UseJBossWebLoader">true</attribute>
在webapp(你的web应用)里log4j的配置文件采用xml形式,并命名为log4j.xml,同时在webapp的lib里需要包含log4j相关的jar包,通过这样的配置后,webapp的log4j和jboss的log4j将相互隔离互不影响。
注:关于JBoss启动和ClassLoader模型的关系 可以参见:http://blog.csdn.net/youfly/archive/2009/02/12/3884081.aspx
四,端口配置
1,JBoss 将Tomcat 作为其默认Web容器,在$JBOSS_SERVER_HOME/deploy/jbossweb-tomcat55.sar/server.xml找到该文件,内容如下:
设置HTTP连接端口:
<Connector port="${yourapp_jboss_port}" address="${jboss.bind.address}" maxThreads="250" strategy="ms" maxHttpHeaderSize="8192" emptySessionPath="true" URIEncoding="GBK" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true"/>
JBoss AJP所监听的端口配置:
<Connector port="${ajp_port}" address="${jboss.bind.address}" backlog="256" maxThreads="250" emptySessionPath="true" enableLookups="false" connectionTimeout="600000" disableUploadTimeout="true" protocol="AJP/1.3" URIEncoding="GBK"/>
五,数据源配置
1,$JBOSS_SERVER_HOME/deploy/oracle-ds.xml
oracle JNDI数据源配置
数据库登录用户名 需要在login-config.xml进行配置
注:数据源配置文件的后缀为-ds.xml,如果 是HSQL数据库 对应的就是$JBOSS_SERVER_HOME/deploy/hsqldb-ds.xml,等
为将oracle JDBC驱动供JBoss使用,用户需要将oracle驱动拷贝到default服务器配置中的lib目录。
六,附录
附带一个目录结构表
目录 | 描述 |
---|---|
bin | 启动和关闭 JBoss 的脚本( run.bat 为 windows 系统下的启动脚本, shutdown.bat 为 windows 系统下的关闭脚本)。 |
client | 客户端与 JBoss 通信所需的 Java 库( JARs )。 |
docs | 配置的样本文件(数据库配置等)。 |
docs/dtd | 在 JBoss 中使用的各种 XML 文件的 DTD |
lib | 一些 JAR , JBoss 启动时加载,且被所有 JBoss 配置共享。(不要把你的库放在这里) |
server | 各种 JBoss 配置。每个配置必须放在不同的子目录。子目录的名字表示配置的名字。 JBoss 包含 3 个默认的配置: minimial , default 和 all ,在你安装时可以进行选择。 |
server/all | JBoss 的完全配置,启动所有服务,包括集群和 IIOP 。 |
server/default | JBoss 的默认配置。在没有在 JBoss 命令行中指定配置名称时使用。 |
server/default/conf | JBoss 的配置文件。 |
server/default/data | JBoss 的数据库文件。比如,嵌入的数据库,或者 JBossMQ |
server/default /deploy | JBoss 的部署目录。放到这里的任何文件或目录会被 JBoss 自动部署。 EJB 、 WAR 、 EAR ,甚至服务。 |
server/default /lib | 一些 JAR , JBoss 在启动特定配置时加载他们。 (default 和 minimial 配置也包含这个和下面两个目录。 ) |
server/default/log | JBoss 的日志文件。 |
server/default/tmp | JBoss 的临时文件。 |