JBOSS安装配置&调优浦华众城闫昊2008-12-8第一部分JBOSS安装配置常见用语•什么是API•什么是J2SDK•什么是JDK•什么是JVM•什么是JRE常见用语•APIApplicationProgrammeInterface•J2SDKJ2SDK=JDK+JRE,J2SDK(Java2SoftwareDevelopmentKit)•JDKJavaDevelopmentKit•JVMJavaVirtualMachine•JREJavaRuntimeenvironmentJBoss是什么•JBoss是一个管理EJB的容器和服务器•JBoss主要模块主要的JBoss模块是在MeanServer上的可管理MBean。1.JBossEJB容器是JBoss服务器的核心实现。它有两个特性,第一是在运行期产生EJB对象的Stub和Skeleton类,第二是支持热部署。2.JBossNS是JBoss命名服务用来定位对象和资源。它实现了JNDIJ2EE规范.3.JBossTX是由JTA/JTS支持的交易管理控制.4.部署服务支持EJB(jar)、Web应用文档(war)和企业级应用文档(ears)的部署。它会时刻关心J2EE应用的URL情况,一旦它们被改变或出现的时候将自动部署。5.JBossMQ使Java消息规范(JMS)的实现。JBoss的目录结构•bin启动和关闭JBoss的脚本•client客户端与JBoss通信所需的Java库(JARs)•docs配置的样本文件(数据库配置等•docs/dtd在JBoss中使用的各种XML文件的DTD•lib一些JAR,JBoss启动时加载,且被所有JBoss配置共享。(不要把你的库放在这里)•server各种JBoss配置。每个配置必须放在不同的子目录。子目录的名字表示配置的名字。JBoss包含3个默认的配置:minimial,default,production和all,在你安装时可以进行选择。•server/allJBoss的完全配置,启动所有服务,包括集群和IIOP。•server/defaultJBoss的默认配置。(RedhatJboss-GA的默认配置为production)•server/all/confJBoss的配置文件。•server/all/dataJBoss的数据库文件。比如,嵌入的数据库,或者JBossMQ。•server/all/deployJBoss的热部署目录。放到这里的任何文件或目录会被JBoss自动部署。EJB、WAR、EAR,甚至服务。•server/all/lib一些JAR,JBoss在启动特定配置时加载他们。(default和minimial配置也包含这个和下面两个目录。)•server/all/logJBoss的日志文件。•server/all/tmpJBoss的临时文件。安装配置JBOSS•安装JAVA#./jdk-1_5_0_14-linux-i586.bin•安装JBOSS#unzipjboss-eap-4.3.0.GA_CP03.zip•设置环境变量#vi/etc/profileexportJAVA_HOME=/usr/jdkexportPATH=$PATH:$JAVA_HOME/bin:/$JAVA_HOME/jre/binexportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/libexportJBOSS_HOME=/opt/jboss-eap-4.3/jboss-as/启动JBOSS•./$JAVA_HOME/bin/run.sh常用参数-b--host=hostoripBindaddressforallJBossservices-c--configuration=nameSettheserverconfigurationname•浏览器中输入:http://主机IP地址:8080看到jboss的初始界面为安装成功JBOSS的基本配置(一)•jmx-console用户名密码设置step1路径:%JBOSS_HOME%/server/default/deploy/jmx-console.war/WEB-INF/修改jboss-web.xml,web.xml文档,根据说明,去掉注释。step2路径:%JBOSS_HOME%/server/default/conf/props修改props/jmx-console-users.properties定义了用户名、密码修改props/jmx-console-roles.properties定义了用户所属角色•web-console用户名密码设置step1路径:%JBOSS_HOME/server/production/deploy/management/console-mgr.sar/web-console.war/WEB-INF/修改:jboss-web.xml,web.xml文档,根据说明,去掉注释。step2路径:%JBOSS_HOME/server/production/deploy/management/console-mgr.sar/web-console.war/WEB-INF/classes修改:props/web-console-users.properties定义了用户名、密码修改:props/web-console-roles.properties定义了用户所属角色JBOSS的基本配置(二)•更改jboss默认端口路径:server/production/deploy/jboss-web.deployer修改:server.xml文件中Connectorport=8080address=${jboss.bind.address}•配置web虚拟目录路径:server/production/deploy/jboss-web.deployer修改:server.xml文件中找到Hostname=localhostautoDeploy=falsedeployOnStartup=falsedeployXML=false添加如下一行如下信息来添加虚拟目录:Contextcookies=truecrossContext=truepath=/weeklyreportdocBase=/usr/local/weeklyreport/path参数是浏览器中输入的虚拟目录名,而docBase则是指向本地访问的目录。JBOSS的简单测试(一)•jsp测试在deploy下建立test.war文件夹,将jsp文件放到这里进行测试例如建立一testdate.jsp如下:%@pagelanguage=java%%@pagecontentType=text/html;charset=gb2312%%@pageimport=java.util.*%%=newDate().toString()%通过调用就可得到当前日期时间。JBOSS的简单测试(二)•连接MySQL测试step1#cp%JBOSS_HOME\docs\examples\jca\mysql-ds.xml%JBOSS_HOME\server\production\deploy\修改.jndi,user,password#vimysql-ds.xmlconnection-urljdbc:mysql://localhost:3306/mysql/connection-urluser-nametest/user-namepasswordtest/passwordstep2下载MySQL驱动,并解压.重新启动JBossJBOSS的简单测试(二)•连接MySQL测试step3#videploy/test.war/testmysql.jsp%@pagelanguage=java%%@pageimport=javax.naming.*%%@pageimport=javax.sql.*%%@pageimport=java.sql.*%%!javax.sql.DataSourceds;%%try{Contextctx=newInitialContext();ds=(javax.sql.DataSource)ctx.lookup(java:/MySqlDS);}catch(Exceptione){out.println(errowhenconnecttojavanamingapi);}Connectionconn=ds.getConnection();Statementst=conn.createStatement();StringsqlStr=select*fromdb;ResultSetrs=st.executeQuery(sqlStr);while(rs.next()){out.println(rs.getString(Db)+br);}rs.close();st.close();conn.close();%JBOSS的简单测试(三)•servlet的配置测试step1#cp/opt/jboss-eap-4.3/jboss-as/server/production/lib/servlet-api.jar/usr/jdk/jre/ext/#viHelloWorld.javaimportjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassHelloWorldextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{response.setContentType(text/html);PrintWriterout=response.getWriter();out.println();out.println(HelloWorld);}}#javac-classpath%CLASSPATH%;%JBOSS_HOME/server/production/lib/servlet-api.jarHelloWorld.javaJBOSS的简单测试(三)•servlet的配置测试step2#mkdir%JBOSS_HOME/server/production/deploy/test.war/WEB-INF/classes#cpHelloWorld.class%JBOSS_HOME/server/production/deploy/test.war/WEB-INF/classes#vi%JBOSS_HOME/server/production/deploy/test.war/WEB-INF/web.xml?xmlversion=1.0?!DOCTYPEweb-appPUBLIC-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN