JDK1.5+SSH+Jboss4.2.3应用部署、开发配置

http://download.jboss.org/jbosside/updates/stable 
https://devstudio.jboss.com/updates/3.0/ 
http://download.jboss.org/jbosstools/updates/development 
http://download.jboss.org/jbosstools/updates/stable/galileo/ 


一、 概述 
JBoss是一个开源的符合J2EE规范的应用服务器, 在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。JBoss是免费的,开放源代码J2EE的实现,它通过LGPL许可证进行发布,这使得JBoss广为流行。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术。JBoss4.2X的web容器使用JBoss Web v2.x (集成tomcat6) ,对大部分Java EE 5“新的”API来说,比如EJB3、JAX-WS、JPA等,在JBoss AS 4.2系列中已经实现了。 
这里我们选用JBOSS4.2.3版本作为我们的web应用服务器。 
JBoss4.2.3使用JDK1.5,JDK1.5的安装配置略。 
二、 Jboss配置(步骤): 
1. 配置数据源:在 jboss路径\docs\examples\jca目录下有各种数据库配置文件的样本。选择一个你合适的,copy到 server\default\deploy 下。配置文件可"随意"命名为   XXXX-ds.xml,该命名的后辍请"确保"为"-ds.xml",如:v10-oracle-ds.xml。配置如下: 
<?xml version="1.0" encoding="UTF-8"?> 
<datasources> 
<local-tx-datasource> 
<jndi-name>jdbc/btdb1</jndi-name> <connection-url>jdbc:oracle:thin:@192.168.0.36:1522:ORCL11GR2</connection-url> 
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class> 
<user-name>BTV10_GS</user-name> 
<password>BTV10_GS</password> 
<!--使用Java上下文,设置为flase --> 
<use-java-context>false</use-java-context> 
<!--最小连接池数目 --> 
<min-pool-size>5</min-pool-size> 
<!--最大连接池数目 --> 
<max-pool-size>800</max-pool-size> 
<!--数据库连接空闲时间,单位为分钟,如果负载较大,可以设为5,如果一般,可以设为3--> 
<idle-timeout-minutes>5</idle-timeout-minutes> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> 
   <metadata> 
   <type-mapping>Oracle9i</type-mapping> 
   </metadata> 
   </local-tx-datasource> 

  <local-tx-datasource> 
<jndi-name>jdbc/btdb2</jndi-name> 
<connection-url>jdbc:oracle:thin:@192.168.0.36:1522:ORCL11GR2</connection-url> 
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class> 
<user-name>BTV10_GS</user-name> 
<password>BTV10_GS</password> 
<!--使用Java上下文,设置为flase --> 
<use-java-context>false</use-java-context> 
<!--最小连接池数目 --> 
<min-pool-size>5</min-pool-size> 
<!--最大连接池数目 --> 
<max-pool-size>800</max-pool-size> 
<!--数据库连接空闲时间,单位为分钟,如果负载较大,可以设为5,如果一般,可以设为3--> 
<idle-timeout-minutes>5</idle-timeout-minutes> 
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> 
<metadata> 
<type-mapping>Oracle9i</type-mapping> 
</metadata> 
   </local-tx-datasource> 
</datasources> 
2. 将web应用解压至“JBOSS安装目录\server\default\deploy”目录下,文件夹改名为xxx.war(如server\default\deploy\btweb.war),或者直接将war包拷贝到该目录。 
3. 修改“JBOSS安装目录 
\server\default\deploy\jboss-web.deployer\META-INF” 
下的jboss-service.xml文件,改属性“UseJBossWebLoader”为true。 
4. 调整jboss的日志级别,Jboss安装目录 
\server\default\conf\jboss-log4j.xml,最后节点属性<root>开头插入属性:<level value="INFO" />。 
5. 修改run.bat的JVM参数(2G内存例),编辑Jboss安装目录\bin\run.bat文件,查找属性: 
rem JVM memory allocation pool parameters. Modify as appropriate. 
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m 

set JAVA_OPTS修改为: 
set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m 

据机器设备情况调整参数大小。 
-Xms:初始化内存大小 
-Xmx:可以使用最大内存,建议设置在内存最大值的50%至80% 
-XX:PermSize:永久域初始值 
-XX:MaxNewSize:新生成的池初始值最大值 
-XX:MaxPermSize:永久域初始值最大值 
具体参数请参考相关文档。 

三、 web应用修改: 
1. 修改\WEB-INF\web.xml文件,改属性“webConFlag”为1;注释掉属性“resource-ref”(涉及jndi)。存在则修改 
2. 修改\WEB-INF\reportConfig.xml文件,改属性“JNDIPrefix”下面的value属性值为空,如:去掉java前缀环境值<value>java:comp/env</value>改为:<value></value>。存在则修改 
3. 修改\WEB-INF\classes\spring\datasource.xml文件,改所有属性为“jndiName”的value值分别为:jdbc/btdb1。 
如: <value>jdbc/btdb1</value> 
4. 删除web应用目录\WEB-INF\lib目录下的jar包:javax.servlet.jar、servlet-api.jar。 
5. 若\WEB-INF\lib目录下存在bytterframework.jar(可能为bytterframeworkXX.jar,X表示任意字符)或byttermonitor.jar(可能为byttermonitorXX.jar),若不是最新的(日期应该为2011年11月1日之后,包含当日),请咨询测试组、赵方利、张均锋。 
6. 若\WEB-INF\lib目录下不存在ojdbc14.jar,请咨询测试组、赵方利、张均锋等获取ojdbc14.jar,把ojdbc14.jar拷贝到“JBOSS安装目录\server\default\lib”目录下 
注:1、上述数据源JNDI名称值依赖jboss的数据源配置的JNDI名称。 

四、 Jboss配置其它(可选): 
1. 1、WEB服务器端口号的修改。Jboss默认端口是8080,修改JBoss安装目录server/default/deploy/jboss-web.deployer下的server.xml文件,内容如下: 
<Connector port="8080" address="${jboss.bind.address}"    
         maxThreads="250" maxHttpHeaderSize="8192" 
         emptySessionPath="true" protocol="HTTP/1.1" 
         enableLookups="false" redirectPort="8443" acceptCount="100" 
         connectionTimeout="20000" disableUploadTimeout="true" /> 
将上面的8080端口修改为你想要的端口即可。重新启动JBoss后访问即可。 
Jboss通常占用的端口是1098,1099,4444,4445,8080,8009,8083,8093这几个。 

五、 Eclipse调试JBOSS(开发): 
  两种方式: 
1、 在JBOSS安装目录\server\default\deploy目录下建立web应用目录,以.war(如:v10web.war)为web应用后缀。在eclipse工程建立ant文件,在工程下发布程序文件至v10web.war即可。 
2、 在JBOSS安装目录外设置web应用目录,同样以.war为文件后缀,修改\server\default\conf\jboss-service.xml文件的属性“URLs”加上指定web目录,如:,file:///D:/testProjects/jbosswarDeploy/v10web1.war最后在eclipse工程建立ant文件,在工程下发布程序文件至web目录即可。 
  选择上面其中之一(不能同时采用两种方式)发布web程序后,在eclipse建立JBOSS服务器: 

A、选择jboss版本(这里4.2),勾选Create a new local server,Next 

B、选择JBOSS安装目录,完成。 

C、配置参数,双击servers页签下已建立的JBOSS服务名称,弹出下图: 


把启动、停止时间值调大一些: 

点击“Open lauch configuration”jvm启动参数: 

选择jboss服务器,点击启动,可以进行测试和调试。 

六、 FAQ(常见问题): 
Jboss启动时报数据源文件的utf-8错误,怎么解决? 
详细异常:ERROR [org.jboss.deployment.MainDeployer] Could not initialise deployment: file:/E:/Jboss/server/default/deploy/btweb-ds.xml 
org.jboss.deployment.DeploymentException: Could not parse dd; - nested throwable: (org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.) 
at org.jboss.deployment.XSLSubDeployer.findDd(XSLSubDeployer.java:231) 
at org.jboss.deployment.XSLSubDeployer.init(XSLSubDeployer.java:161) 
at org.jboss.deployment.MainDeployer.init(MainDeployer.java:872) 
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:809) 
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782) 
原因是数据源文件编码问题。 
解决: 
这是编辑数据源文件保存文件格式不对,也可能是其它原因引起。 
方法1、使用记事本编辑数据源文件,直接另存为,选择编码utf-8,然后删除原来文件,再把另存为的文件改回原来文件名即可: 

方法2、使用其它文本编辑工具直接把文件编码格式转换成utf-8。 
方法3、使用文本编辑工具新建数据源文件保存编码格式为utf-8。 

Jboss启动时报BtActionServlet或BtFunDispatcher空指针错误,怎么解决? 
详细异常:ERROR [org.apache.struts.action.ActionServlet] Unable to initialize Struts ActionServlet due to an unexpected exception or error thrown, so marking the servlet as unavailable.  Most likely, this is due to an incorrect or missing library dependency. 
java.lang.NullPointerException 
at com.byttersoft.framework.web.servelet.BtActionServlet.getFile(Unknown Source) 
at com.byttersoft.framework.web.servelet.BtActionServlet.initModuleConfig(Unknown Source) 
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:333) 
at javax.servlet.GenericServlet.init(GenericServlet.java:212) 
或异常: 
ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/btweb]] StandardWrapper.Throwable
java.lang.NullPointerException 
at com.byttersoft.framework.report.BtFunDispatcher.registerfunctions(Unknown Source) 
at com.byttersoft.framework.web.servelet.BtReportEnvInit.init(Unknown Source) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) 
原因程序框架包不是最新的。 
解决: 
请参考<第三节:web应用修改>的第5点。若还是出现这个错误,请检查是否存在该目录“\WEB-INF\classes\com\byttersoft\framework”,存在请删除(或直接咨询测试组、赵方利、张均锋)。 

Jboss启动时报不能创建数据源、注册驱动失败错误,怎么解决? 
详细异常:WARN  [org.jboss.resource.connectionmanager.JBossManagedConnectionPool] Throwable while attempting to get a new connection: null 
org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Failed to register driver for: oracle.jdbc.driver.OracleDriver; - nested throwable: (java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver)) 
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:190)
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener(InternalManagedConnectionPool.java:619)
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:264)
原因是未加入数据库驱动包。 
解决: 
请参考<第三节:web应用修改>的第6点。 

如何查看Jboss日志? 
Jboss安装目录\server\default\log\server.log,log目录下的文件可以直接删除,重新启动jboss时,jboss会自动生成log目录下的文件。 




以下为选读内容 
附:JBOSS4.2.2配置参考资料(可选看) 


一.JBOSS入门 
1.下载和安装JBoss 
在下载和安装JBoss之前,请开发者确认一下自己的机器是否安装了最新版的JVM。为运行JBoss 4.2.2GA,开发者必须提供Java 5虚拟机。在我们动身之前,请再次检查一下您是否安装了合适的JDK,而且JAVA_HOME环境变量是否已经设置好。 
用户可以从JBoss网站(http://www.jboss.org/jbossas/downloads/)免费下载到JBoss应用服务器。其中,可用的二进制版本格式分别有.zip、.tar.gz以及.bz2。JBoss二进制发布版的具体内容与版本格式无关,用户需要根据各自的平台选择相应的二进制版本。在您下载完成JBoss后,将它解压到合适的机器位置上。有一点请注意,包含解压目录的完整路径(比如,Windows操作系统中的Program Files目录)上不能够含有空格,因为这将导致错误的出现。 
2.JBoss的目录结构 
安装JBoss 会创建下列目录结构: 
目录 描述 
bin 启动和关闭JBoss 的脚本 
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 的默认配置,它含有大部分J2EE应用所需的标准服务。但是,它不含有JAXR服务、IIOP服务、或者其他任何群集服务。 
server/minimal 这是启动JBoss服务器所要求的最低配置。minimal配置将启动日志服务、JNDI服务器以及URL部署扫描器,以找到待部署的(新)应用。对于那些不需要使用任何其他J2EE技术,而只是使用自定义服务的场合而言,则这种JMX/JBoss 配置最适合。它仅仅是服务器,而不包含Web容器、不提供EJB和JMS支持。 
server/default/conf 含有指定JBoss核心服务的jboss-service.xml文件。同时,还包括核心服务的其他配置文件。 
server/default/data 这一目录存储持久化数据,即使服务器发生重启其中的数据也不会丢失。许多JBoss服务将数据存储在这里,比如Hypersonic数据库实例。 
server/default/deploy 用户将应用代码(JAR\WAR\EAR文件)部署在此处。同时,deploy目录也用于热部署服务(即,那些能够从运行服务器动态添加或删除的服务)。因此,用户能够在deploy目录看到大量的配置文件。尤其是,用户能够看到JMX控制台应用(未打包的WAR文件),本书前面讨论过。JBoss服务器将定期扫描该目录,从而查找是否有组件更新或修改,从而自动完成组件的重新部署。 
server/default/lib 服务器配置所需的JAR文件。用户可以添加自身的库文件,比如JDBC驱动,等等。 
server/default/log 日志信息将存储到该目录。JBoss使用Jakarta Log4j包作为其日志功能。同时,用户可以在应用中直接使用Log4j日志记录功能。 
server/default/tmp 供部署器临时存储未打包应用使用,也可以作为其他用途。 
server/default/work 供编译JSP使用。 
其中,data、log、tmp、work目录是JBoss创建的。如果用户没有启动过JBoss服务器,则这些目录不会被创建。 
既然提到了JBoss中的热部署服务主题,接下来在探讨服务器配置问题前先来看看实际例子。如果还没有启动JBoss,则请运行它。然后,请再次查看deploy目录(用户必须保证运行了default配置),然后删除mail-service.xml文件。通过运行JBoss服务器的控制台能够浏览到如下信息: 
13:10:05,235 INFO [MailService] Mail service 'java:/Mail' removed from JNDI 
然后,再次将mail-service.xml文件放回原处,用户将通过控制台再次发现JBoss重新部署了该服务。所以,这就是JBoss的热部署。 
3.启动服务器 
首先,来看看如何运行JBoss服务器。用户可以在JBoss主安装目录的bin目录中找到若干个脚本文件。请执行run脚本(对于Windows,则运行run.bat;对于Linux、OS X、UNIX系统,则运行run.sh)。默认jboss运行default配置,如果要运行all配置请执行命令 run –c all。其中,部署和启动JBoss组件的具体日志信息能够在运行JBoss的控制台浏览到。如下消息表明,JBoss服务器成功运行: 
11:18:46,828 INFO  [Server] JBoss (MX MicroKernel) [4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)] Started in 27s:94ms 
用户可以通过Web浏览器验证JBoss应用服务器是否在运行,其HTTP监听端口为8080(其中,必须保证在启动JBoss时,8080端口并没有被其他应用或服务占用)。通过Web浏览器能够找到相关有用的JBoss资源(译者注:http://localhost:8080)。 
4.JMX控制台 
通过http://localhost:8080/jmx-console,即JMX控制台应用,用户能够浏览到服务器活动视图。图1.1给出了示例界面。 上述界面给出了JBoss管理控制台,它提供了构成JBoss服务器的JMX MBean原始视图。我们暂时可以不用理会控制台的任何内容,但是需要知道控制台能够提供运行中的JBoss应用服务器的大量信息。另外,通过它,用户能够修改、启动、停止JBoss组件。 比如,请找到service=JNDIView链接,然后单击。该特定MBean提供了如下服务内容,即能够浏览服务器中JNDI命名空间的结构信息。接下来,请在该MBean显示页面底端找到list操作,然后单击invoke按钮。invoke操作将返回绑定到JNDI树中的当前名字列表,这对于获得EJB名字很有帮助,比如当EJB应用客户端不能够解析EJB名字时。 

图1-1 JMX管理控制台Web应用视图 
5.停止服务器 
为了能够停止JBoss服务器,用户可以敲入Ctrl-C,或者从bin目录运行shutdown脚本。甚至,用户还可以使用管理控制台(请在jboss.system部分找到type=Server,然后调用shutdown操作。)。 
6.JBoss中的部署 
JBoss 中的部署过程非常的简单、直接。在每一个配置中,JBoss 不断的扫描一个特殊目录的变化: 
[jboss 安装目录]/server/config-name/deploy 
此目录一般被称为“部署目录”。 
你可以把下列文件拷贝到此目录下: 
* 任何jar 库(其中的类将被自动添加到JBoss 的classpath 中) 
* EJB JAR 
*WAR (Web Appliction aRrchive) 
* EAR (Enterprise Application aRchive) 
* 包含JBoss MBean 定义的XML 文件 
* 一个包含EJB JAR、WAR 或者EAR 的解压缩内容,并以.jar、.war 或者.ear 结尾的目录。 
要重新部署任何上述文件(JAR、WAR、EAR、XML 等),用新版本的文件覆盖以前的就可以了。JBoss 会根据比较文件的时间发现改变,然后部署新的文件。要重新部署一个目录,更新他的修改时间即可。 
二.JBOSS的配置 
1. JBoss日志设置 
Log4j是JBoss使用的日志功能包。通过conf/jboss-log4j.xml文件能够控制JBoss的日志功能。该文件定义了一套Appender、指定了日志文件、具体消息Category类型的存储、消息格式以及消息的过滤级别。默认时,JBoss会同时在控制台和日志文件(位于log/server.log文件中)中生成输出信息。 一共存在5个基本的日志级别:DEBUG、INFO、WARN、ERROR以及FATAL。其中,控制台的日志入口(threshold)为INFO,即用户通过控制台能够浏览到提示信息、警告信息、错误信息,但是调试信息查看不到。相比之下,JBoss并没有为server.log文件设置任何入口,因此所有生成的消息将记录到server.log文件中。如果JBoss运行过程中出现了错误,则通过控制台可能找不到用户有用的信息,因此建议通过server.log文件查看是否有调试信息可供解决问题所用。然而,请注意,通过调整日志入口能够在控制台查看到调试信息,但是这并没有保证所有的JBoss消息都将记录到server.log文件中。因此,用户还需要为单个的Category设置不同的日志级别。比如,jboss-log4j.xml给出了如下Category。 
<!-- Limit the org.apache category to INFO as its DEBUG is verbose --> 
   <category name="org.apache"> 
      <priority value="INFO"/> 
   </category> 
2. web 服务的端口号的修改 
这点在前文中有所提及,即修改JBoss安装目录server/default/deploy/jboss-web.deployer下的server.xml文件,内容如下: 
<Connector port="8080" address="${jboss.bind.address}"    
         maxThreads="250" maxHttpHeaderSize="8192" 
         emptySessionPath="true" protocol="HTTP/1.1" 
         enableLookups="false" redirectPort="8443" acceptCount="100" 
         connectionTimeout="20000" disableUploadTimeout="true" /> 
将上面的8080端口修改为你想要的端口即可。重新启动JBoss后访问:http://localhost/:新设置的端口,可看到JBoss的欢迎界面。 
3. JBoss 的安全设置 
3.1 jmx-console 登录的用户名和密码设置 
默认情况访问 http://localhost:8080/jmx-console 就可以浏览jboss的部署管理的一些信息,不需要输入用户名和密码,使用起来有点安全隐患。下面我们针对此问题对jboss进行配置,使得访问jmx-console也必须要知道用户名和密码才可进去访问。步骤如下: 
3.1.1 修改jboss-web.xml文件 
打开/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml文件,去掉<security-domain>java:/jaas/jmx-console</security-domain>的注释。修改后的该文件内容为: 
<jboss-web> 
   <!-- Uncomment the security-domain to enable security. You will 
      need to edit the htmladaptor login configuration to setup the 
      login modules used to authentication users.--> 
      <security-domain>java:/jaas/jmx-console</security-domain> 
</jboss-web> 
3.1.2 修改web.xml文件 
与3.1.1中的jboss-web.xml同级目录下的web.xml文件,查找到<security-constraint/>节点,去掉它的注释,修改后该部分内容为: 
<!-- A security constraint that restricts access to the HTML JMX console 
   to users with the role JBossAdmin. Edit the roles to what you want and 
   uncomment the WEB-INF/jboss-web.xml/security-domain element to enable 
   secured access to the HTML JMX console.--> 
   <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> 
   在此处可以看出,为登录配置了角色JBossAdmin。 
3.1.3 修改login-config.xml文件 
在第一步中的jmx-console安全域和第二步中的运行角色JBossAdmin都是在login-config.xml中配置,我们在JBoss安装目录/server/default/config下找到它。查找名字为:jmx-console的application-policy: 
<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> 
在此处可以看出,登录的角色、用户等的信息分别在props目录下的jmx-console-roles.properties和jmx-console-users.properties文件中设置,分别打开这两个文件。 
其中jmx-console-users.properties文件的内容如下: 
# A sample users.properties file for use with the UsersRolesLoginModule 
admin=admin 
该文件定义的格式为:用户名=密码,在该文件中,默认定义了一个用户名为admin,密码也为admin的用户,读者可将其改成所需的用户名和密码。 
jmx-console-roles.properties的内容如下: 
# A sample roles.properties file for use with the UsersRolesLoginModule 
admin=JBossAdmin, HttpInvoker 
该文件定义的格式为:用户名=角色,多个角色以“,”隔开,该文件默认为admin用户定义了JBossAdmin和HttpInvoker这两个角色。 
配置完成后读者可以通过访问: http://localhost:8088/jmx-console/ ,输入jmx-console-roles.properties文件中定义的用户名和密码,访问jmx-console的页面。如图: 

3.2 web-console 登录的用户名和密码设置 
默认情况下,用户访问JBoss的web-console时,不需要输入用户名和密码,为了安全起见,我们通过修改配置来为其加上用户名和密码。步骤如下: 
3.2.1修改jboss-web.xml文件 
打开server/default/deploy/management/console-mgr.sar /web-console.war/WEB-INF/jboss-web.xml文件,去掉<security-domain>java:/jaas/web-console</security-domain>的注释,修改后的文件内容为: 
<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE jboss-web 
    PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN" 
    "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd"> 
<jboss-web> 
   <!-- Uncomment the security-domain to enable security. You will 
   need to edit the htmladaptor login configuration to setup the 
   login modules used to authentication users.--> 
   <security-domain>java:/jaas/web-console</security-domain> 
   <!-- The war depends on the --> 
   <depends>jboss.admin:service=PluginManager</depends> 
</jboss-web> 
3.2.2 修改web.xml文件 
打开3.2.1中jboss-web.xml同目录下的web.xml文件,去掉<security-constraint>部分的注释,修改后的该部分内容为: 
<!-- A security constraint that restricts access to the HTML JMX console 
   to users with the role JBossAdmin. Edit the roles to what you want and 
   uncomment the WEB-INF/jboss-web.xml/security-domain element to enable 
   secured access to the HTML JMX console.--> 
   <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> 
3.2.3 修改login-config.xml文件 
打开JBoss安装目录server/default/conf下的login-config.xml文件,搜索web-console,可找到如下内容: 
<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> 
在文件中可以看到,设置登录web-console的用户名和角色等信息分别在login-config.xml文件所在目录下的web-console-users.properties和web-console-roles.properties文件中,但因为该目录下无这两个文件,我们在JBoss安装目录server/default/conf/props三目录下建立这两个文件,文件内容可参考在“jmx-console登录的用户名和密码设置”中的两个相应的配置文件的内容,web-console-users.properties文件的内容如下: 
# A sample users.properties file for use with the UsersRolesLoginModule 
admin=admin 
web-console-roles.properties文件的内容如下: 
# A sample roles.properties file for use with the UsersRolesLoginModule 
admin=JBossAdmin,HttpInvoker 
因为此时这两个文件不与login-config.xml同目录,所以login-config.xml文件需进行少许修改,修改后的<application-policy name = "web-console">元素的内容为: 
<application-policy name = "web-console"> 
       <authentication> 
          <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" 
             flag = "required"> 
             <module-option name="usersProperties">props/web-console-users.properties</module-option> 
             <module-option name="rolesProperties">props/web-console-roles.properties</module-option> 
          </login-module> 
       </authentication> 
    </application-policy> 
4. JBoss 数据源的配置 
在 jboss路径\docs\examples\jca目录下有各种数据库配置文件的样本。选择一个你合适的,copy到 server\all\deploy 或 server\default\deploy 下, 我们以msserver数据库为列 ,然后修改其中的如下内容 : 
<?xml version="1.0" encoding="UTF-8"?> 
<datasources> 
  <local-tx-datasource> 
    <jndi-name>DEV_MSSQLDS</jndi-name> 
    <connection-url>jdbc:sqlserver://192.168.14.201:1455;DatabaseName=Beta_Core_Psmsg_Beta6</connection-url> 
    <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class> 
    <user-name>ppcn_beta6</user-name> 
    <password>ppcn_beta6</password> 
    <!--最小连接池数目 --> 
<min-pool-size>5</min-pool-size> 
<!--最大连接池数目 --> 
    <max-pool-size>800</max-pool-size> 
    <!--数据库连接空闲时间,单位为分钟,如果负载较大,可以设为5,如果一般,可以设为3--> 
    <idle-timeout-minutes>5</idle-timeout-minutes> 
      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml --> 
      <metadata> 
         <type-mapping>MS SQLSERVER2000</type-mapping> 
      </metadata> 
  </local-tx-datasource> 
</datasources> 
    如果后台没有报异常,通过http://localhost:8080/jmx-console进入jmx控制台,在jdbc栏目可以看到以下内容: 

代码示例: 
javax.naming.InitialContext  ctx = new InitialContext(); 
javax.sql.DataSource ds  =  (DataSource)ctx.lookup(“java:/DEV_MSSQLDS”); 
另外请注意:该配置文件可"随意"命名为   XXXX-ds.xml,该命名的后辍请"确保"为"-ds.xml"。 


pom.xml 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
  <modelVersion>4.0.0</modelVersion> 
  <groupId>com.mycompany.app</groupId> 
  <artifactId>my-webapp</artifactId> 
  <packaging>war</packaging> 
  <version>1.0-SNAPSHOT</version> 
  <name>my-webapp Maven Webapp</name> 
  <url>http://maven.apache.org</url> 
  <dependencies> 
    <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
    </dependency> 
</dependencies> 
<build> 
     <finalName>my-webapp</finalName> 
<plugins> 
<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
        <archive> 
          <addMavenDescriptor>false</addMavenDescriptor> 
        </archive> 
      </configuration> 
    </plugin> 
      <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>jboss-maven-plugin</artifactId> 
        <version>1.5.0</version> 
        <configuration> 
          <jbossHome>C:\Program Files\server\jboss-4.2.2.GA</jbossHome> 
          <serverName>all</serverName> 
  <fileName>target/my-webapp.war</fileName> 
        </configuration> 
      </plugin> 
    </plugins> 
    </build> 
</project> 


 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
  <modelVersion>4.0.0</modelVersion> 
  <groupId>com.mycompany.app</groupId> 
  <artifactId>my-webapp</artifactId> 
  <packaging>war</packaging> 
  <version>1.0-SNAPSHOT</version> 
  <name>my-webapp Maven Webapp</name> 
  <url>http://maven.apache.org</url> 
  <dependencies> 
    <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
    </dependency> 
</dependencies> 
<build> 
     <finalName>my-webapp</finalName> 
  <plugins> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
        <archive> 
          <addMavenDescriptor>false</addMavenDescriptor> 
        </archive> 
      </configuration> 
    </plugin> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>jboss-maven-plugin</artifactId> 
        <version>1.5.0</version> 
        <configuration> 
          <jbossHome>C:\Program Files\server\jboss-4.2.2.GA</jbossHome> 
          <serverName>all</serverName> 
    <fileName>target/my-webapp.war</fileName> 
        </configuration> 
      </plugin> 
    </plugins> 
    </build> 
</project> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值