编写者:

周怀进

创建时间:

2005-11-02

审核人:

审核时间:

文档状态:

草稿

ý

受控

自由共享

文档编号:

版本号:

2006-01-12

面向人员:

JBOSS服务器使用者

 

本文档描述了apache web服务器安装以及常用的编译模式;描述了apache+jboss3.2.6做负载均衡(load balance)的部署细节以及一些常见错误说明;描述了部署jboss3.2.3/3.2.6时一些心得、常用配置项。

由于该文档是工作中的经验积累,文档整理的大部分时间也是工作时间,因此有必要替公司做一下广告。

沟通无极限,尽在263,二六三满足你所想!”,欢迎访问http://www.263.net.

很钦佩“spring开源文档”的作者夏昕朋友,他有毅力把那份文档整理出来,因为整理文档是很费时间的一件事,更可贵的是,还能共享出来,他的一句话是“取自于互联网,还于互联网”,我赞赏!期望看到这份文档的朋友们多一些共享精神,这样能节省很多人的时间,大家才有时间去探索、研究一些未知的问题。社会才会有进步!

大家一起来分享自己的经验吧,别人节约了时间,你获得了快乐!

套用一句俗话:文档就是生产力!

该篇文档将会以PDF格式发布到互联网上。

感谢曹庆德先生、张彩霞提供的一些技术指导,感谢冯波、侯斌提供的

apache2.0配置的一些参数。感谢李响、谭述纲。感谢互联网上的诸位朋友们!

A.参考文献

http://httpd.apache.org/docs/2.0/

http://tomcat.apache.org/connectors-doc/

http://www.jboss.com

http://www.sun.com

http://logging.apache.org/log4j/docs/

http://www.oreilly.com

……

……

互联网

写在前面的话:

由于本人也是JBOSS的初级用户,JBOSS又很强大,在工作中也是摸索积累的过程,因此总结难免有所错误或纰漏,但已经是尽我的努力,力求正确,如有错误或纰漏,敬请指正。

文档作者:周怀进

联系方式:

msn: zhj_michael@hotmail.com

zhjjava@126.com

blog: http://spaces.msn.com/members/zhj-michael/

目 录

1 .Apache2.0及连接器jk1.2的编译部署

1.1下载相关软件包

1.2 apache2.0的编译安装

1.3 jk1.2.14的编译安装

1.4 apache及jk1.2的参数配置

1.4.1.httpd.conf的修改

1.4.2.mod_jk2.conf的所有内容

1.4.3.workers2.properties的所有内容

1.5 apache服务的启动和停止

2.JBOSS3.2.3/3.2.6部署及配置修改

2.0 FOR NEW USER

2.0.1 JBOSS 的一点说明

2.0.1 JBOSS常用配置文件的路径

2.1 JBOSS      应用程序的下载及安装

2.2 JBOSS      应用程序的配置调整

2.2.1配置负载均衡,调整参数

2.2.2配置集群(Clustering),调整参数

2.2.3配置数据源,调整参数

2.2.4配置jboss Connector参数

2.2.5访问URL如果是目录,不想显示该目录下文件

2.2.6设置某个应用APP为默认应用

2.2.7配置数据源在APP应用加载前有效(各相关服务加载完毕)

2.2.8日志配置,配置log4j.xml

2.2.9配置contentType及charset,TOMCAT5.0下JSP统一配置

2.3 JVM最小、最大内存的设定

2.4 OS字符集问题

2.5 JBOSS服务的启动、停止

3.附apache https 服务器的安装

1 .Apache2.0及连接器jk1.2的编译部署

1.1下载相关软件包

我们需要软件及其版本说明:

a)    apache服务器:httpd-2.0.54

下载地址: http://httpd.apache.org/download.cgi

b)apache/tomcat连接器:jk1.2.14,这里选用1.2.*版本,虽然有jk2.0,但据相关文档介绍,jk2.0已不再开发,而jk1.2.*版本使用范围很广,久经考验了,稳定性有保障.两个版本系列对应的配置也有很大的变化,故而这里选用jk1.2系列

下载地址:

http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.14/

安装apache本文档依据的版本是httpd-2.0.54,下载Unix Source,下文介绍主要以linux OS为主,间或会介绍一点windows下安装的细节。

我们的目标是用apache来做前端的web服务器,后端用jboss3.2.6,实现负载均衡。

1.2 apache2.0的编译安装

下载完源程序包之后,放到一个临时目录中,如 /home/software/:

#cd /home/software/

#tar zxvf httpd-2.0.54.tar.gz

#cd /home/software/httpd-2.0.54

#./configure --enable-MODULE=shared   --enable-so --with-mpm=worker

#make

#make install

参数解释:

--enable-MODULE=shared :该参数是使得相关的模块编译为可动态加载模块(DSO模式),如果不选用该选项,apache默认的选项是: --enable-MODULE=static,表示将相关的模块静态编译。

两者的区别是:前者使得可以需要更新、重编译某模块(核心模块不受限于这种模式,如coremod_so)时,只需单独编译该模块即可,而不需重新编译整个apache source code,做到单独升级。前者弊端是导致apache启动时慢20%左右,在运行阶段慢5%左右,另外DSO模式不是所有OS都支持的,和软件环境有关系。

--enable-so  :该参数表示支持用mod_so模块提供的功能LoadModulehttpd.conf文件或包含的conf文件中动态加载某个模块。

 

--with-mpm=worker   :该参数是配置apache将以何种模式编译的。Apache网站文档指出不同操作系统下的不同的默认模式.

BeOS

beos

Netware

mpm_netware

OS/2

mpmt_os2

Unix

prefork

Windows

mpm_winnt

在安装完apache后,在类unix OS下,可以在./bin目录下用./httpd –l 来看到编译时指定的mpm参数,他们对应着不同的.c模块。

在windows环境下,可以用./bin/Apache –l 来查看相关被编译的模块。Win环境下默认是 mpm_winnt,则可以看到:

C:\Apache Group\Apache2\bin>apache -l

Compiled in modules:

core.c

mod_win32.c

mpm_winnt.c

http_core.c

mod_so.c

各模式的区别,更具体的描述请参见http://httpd.apache.org/docs/2.0/mpm.html,下面只简单说明一下,worker模式是以process/thread混和模式运行的,如果WEB服务器的期望负载较大的话,则推荐使用worker模式,如果需要一个稳定性考虑为优先的服务器的话,推荐使用prefork模式,同样的负载条件下,prefork模式的apache占用的内存会大很多。

默认安装的路径为: /usr/local/apache2/,如果要指定安装路径,则用参数./configure --prefix=PREFIX来指定安装路径,PREFIX为指定的绝对路径。

可以用PREFIX/bin/apachectl start 来测试是否可以正常启动服务。

可以用PREFIX/bin/httpd –t来测试http.conf的语法是否合法。

1.3 jk1.2.14的编译安装

下载完源程序包之后,放到一个临时目录中,如 /home/software/:

1、#cd /home/software/

2、#tar zxvf jakarta-tomcat-connectors-1.2.14.1-src.tar.gz

3、#cd /home/software/jakarta-tomcat-connectors-1.2.14.1-src/jk/native

4、# ./configure --with-apxs=/usr/local/apache2/bin/apxs

5、#make

6、# cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules

查看…/native目录,会看到有apache-1.3以及apache-2.0目录,在第4步,用--with-apxs参数来指定扩展程序apxs的位置,make程序会根据提供的apxs的版本来辨别需要针对apache的哪个版本来生成mod_jk.so,如本文所示例,程序将知道需要为apache2.0生成mod_jk.so,因此编译工作将会在...jk/native/apache-2.0中进行,浏览编译日志信息会看到这些信息。

第6步是将编译后的so拷贝至apache的安装路径的modules目录中,应该根据安装路径去调整上述脚本中的路径。

另外可以将mod_jk.so静态连接到apache2.0中,然后再一次编译apache2.0,在上述脚本中加上参数:

./configure --with-apache=/home/software/httpd-2.0.54

具体请参阅:

http://tomcat.apache.org/connectors-doc/howto/apache.html

以上工作就算结束了编译、安装工作,下面将进行参数调整,部署工作。

1.4 apache及jk1.2的参数配置

1.4.1.httpd.conf的修改

该文件的路径位于$APACHE-HOME/conf

上述编译过程中我们选用的worker模式,因此我们将修改worker模块的配置

<IfModule worker.c>

StartServers         4    #最初建立进程的数量

ServerLimit         24   #进程建立的最大数量,硬限制

ThreadLimit         128  #每一进程能创建线程的最大数量,硬限制,该参数建议#和ThreadsPerChild一致,如果ThreadLimit > ThreadsPerChild的话,会造成不##必要的内存消耗。

MaxClients         3072  #同时可以得到处理的客户端的最大数量

MinSpareThreads    100   #所有进程中空闲线程的总数最小数值

MaxSpareThreads    200   #所有进程中空闲线程的总数最大数值

ThreadsPerChild     128   #每个子进程可以建立的固定数量的线程

MaxRequestsPerChild  0    #用于控制服务器建立和结束进程的频率,为0表示没有#限制,但在solaris OS下该值可能会出错,可以设置为1000或2000。根据系统#的并发负载吧。

</IfModule>

在httpd.conf文件的最后一行加上:Include conf/mod_jk2.conf

另外还需修改#ServerName www.example.com:80ServerName 127.0.0.1:80

 

1.4.2.mod_jk2.conf的所有内容

新建该文件,并将该文件置于$APACHE-HOME/conf

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers2.properties

JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]

JkLogLevel info

# Select the log format

JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format

JkRequestLogFormat "%w %V %T"

JkMount /* loadbalancer

#apache will serve the static picture.

#以下命令意味着所有的图片将由APACHE解析

JkUnMount /*.jpg loadbalancer 

JkUnMount /*.gif loadbalancer

JkUnMount /*.swf loadbalancer

JkUnMount /*.bmp loadbalancer

JkUnMount /*.png loadbalancer

在上述配置中,是配置所有图片由APACHE来解析,因此我们需要将项目中的所有图片均拷贝到$APACHE-HOME/htdocs/下,如果你的部署的项目(应用),在访问时需要输入前缀,如http://www.DDD.com/TestCrm/login.do,则请注意,在$APACHE-HOME/htdocs/下需要建一个目录“TestCrm”,然后按照你项目中图片所在的路径,连同路径中所有目录一并考入TestCrm目录,例如你的图片位于

…./TestCrm.war/images/1.jpg,那么为了APACHE能找到图片,则你在APACHE中的图片位置应是$APACHE-HOME/htdocs/TestCrm/images/1.jpg。

1.4.3.workers2.properties的所有内容

新建该文件,并将该文件置于$APACHE-HOME/conf

请注意:下列配置中的server105,server106等紫色的斜体字符串都是根据部署的jboss的信息来部署的,其中server105,server106需要在jboss的相关配置中修改,具体详见下文介绍。对应的IP地址应改为JBOSS所在的server IP。

#以下为workers2.propertie的内容

worker.list=loadbalancer,server105,server106

# Define the first node...

worker.server105.port=8009

worker.server105.host=192.10.12.105

worker.server105.type=ajp13

worker.server105.lbfactor=1

#worker.server105.local_worker=1

worker.server105.cachesize=100

# Define the 2nd node...

worker.server106.port=8009

worker.server106.host=192.10.12.106

worker.server106.type=ajp13

worker.server106.lbfactor=1

#worker.server106.local_worker=1

worker.server106.cachesize=100

# Now we define the load-balancing behaviour

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=server105,server106

worker.loadbalancer.sticky_session=1

说明:worker.loadbalancer.sticky_session=1参数的设定,意味着一旦用户通过APACHE连接到某台JBOSS SERVER(创建了session),则只要在该台JBOSS服务正常的情况下,该用户所有的请求都将会发送至该JBOSS SERVER。

1.5 apache服务的启动和停止

/usr/local/apache2/bin/apachectl start

/usr/local/apache2/bin/apachectl stop

如果启动时报错,提示80端口被绑定,请注意有可能是在装linux OS时选装了apache并且启动了服务,请直接在命令行用apachectl stop ,停止原先的服务,其存在路径一般为/usr/sbin/apachectl

2.JBOSS3.2.3/3.2.6部署及配置修改

2.0 FOR NEW USER

2.0.1 JBOSS 的一点说明

$JBOSS-HOME/server/下有3个目录,all/default/minimal,它们是表示3种配置,全部的配置、默认配置、最小配置,我们在启动JBOSS服务时,可以指定

run –c all 表示是启动all配置(将会加载所有服务);run 表示是以默认配置启动;

run –c mimimal  表示是启动mimimal配置。这三者所加载的服务数量不同,具体区别可查阅JBOSS相关文档,你还可以自己定义一个配置,如test,属于高手去为了性能上的考虑了,那这份文档对你的帮助不会太大了。

如果你确定了JBOSS服务启动的配置,那么你的应用及相关配置就需要部署在对应的目录下的相关的路径下,如all/,default/,minimal/下。

2.0.1 JBOSS常用配置文件的路径

为了描述方便,以下描述将以JBOSS3.2.6版本,default配置为例,如果你以别的配置启动,则在对应的目录下寻找或配置相关文件。

1、相关DTD定义文件位于$JBOSS-HOME/docs/dtd,在其下的文件中可以查阅某个XML配置文件中某个元素或属性的意义。

2、数据源配置文件的路径,$JBOSS-HOME/server/default/deploy,文件格式必须是*-ds.xml的样式。不同的数据库配置参数可参考$JBOSS-HOME/docs/examples/jca/下的示例文档。有关参数的细节在下面会有一定的描述。

3、公共的jar包我们可以放在$JBOSS-HOME/server/default/lib下,如数据库的JDBC jar,log4j.jar等,如果这些JAR已经在该lib下放置了,那么我们的应用WEB-INF/lib下不应该再放置,否则JBOSS也会将他们再一次加载,白白占用内存。

4、配置日志的文件,log4j.xml位于$JBOSS-HOME/server/default/conf下,具体配置下文还会有一点介绍

5、$JBOSS-HOME/server/default/work下存放的是JSP编译后的.java及.class文件,如果调试JSP时出错了,可以到该目录下(一级级去翻吧)去找对应的文件,调试问题。还有个小TIPS,有时我们明明把一个JSP更新到对应的目录里了,可是去刷新页面时,内容还是旧的,为了解决该问题,我们可以到work目录下,将对应的.java及.class文件删了,再刷新即可,这个原因不好推测,有时可以自动刷新,有时不行。单个的TOMCAT都能自动刷新,不知为何集成到JBOSS里却有时不行。还需注意的事,你在清除旧的java、class文件时,不能为了省事,而直接删除目录,否则刷新时会报错的,等着你的就是要重启JBOSS服务了。

6、$JBOSS-HOME/server/default/log下存放的是日志文件,默认的log4j.xml配置是将日志输出到该文件夹下的server.log文件,可以去查看信息进行调试。

7、我们的应用一般部署在$JBOSS-HOME/server/default/deploy/jbossweb-tomcat50.sar/下,建个TestCrm.war目录,把我们的整个应用部署在该.war目录下,这样JSP、Servlet将由tomcat引擎来解析处理。

8、配置应用的WEB服务的端口号及参数。

JBOSS3.2.6是在…./ deploy/jbossweb-tomcat50.sar/server.xml中,自己找8080,修改为你想设定的端口即可。

JBOSS3.2.3是在…/default/deploy/jbossweb-tomcat41.sar/META-INF/jboss-service.xml中配置。

2.1 JBOSS  应用程序的下载及安装

前往http://www.jboss.com去下载相应的版本。直接解压到相关的目录即可。

2.2 JBOSS  应用程序的配置调整

2.2.1配置负载均衡,调整参数

需要修改配置文件以适应apache中配置的“session sticky配置”。如下:

Jboss3.2.3修改:

%JBOSS_HOME%/server/default/deploy/jbossweb-tomcat41.sar/META-INF/ jboss-service.xml

修改<Engine name="MainEngine" defaultHost="localhost">为

<Engine name="MainEngine" jvmRoute=" server106"  defaultHost="localhost">

与上述workers2.properties定义的内容一致。

Jboss3.2.6修改:

%JBOSS_HOME%/server/default/deploy/jbossweb-tomcat50.sar/server.xml

修改<Engine name="jboss.web" defaultHost="localhost">为:

<Engine name="jboss.web" jvmRoute=" server106" defaultHost="localhost">

与上述workers2.properties定义的内容一致。

Jboss4.0的修改和Jboss3.2.6的一致。

如上配置后,就可以实现apache+jboss的负载均衡。

2.2.2配置集群(Clustering),调整参数

如果我们要想使得几台JBOSS应用服务器互为备份(仅限于SESSION),在群内一台JBOSS服务器down掉的时候,用户不受影响,继续以登陆用户身份进行工作,则我们需要配置Clustering,并启动相关服务。下面将描述相关配置项:

1)、修改应用APP的web.xml:

Jboss3.2.6:

../default/deploy/jbossweb-tomcat50.sar/Test.war/WEB-INF/web.xml

Jboss3.2.3:

../default/deploy/jbossweb-tomcat41.sar/Test.war/WEB-INF/web.xml

修改内容如下:

<?xml version="1.0"?>

<!DOCTYPE web-app PUBLIC

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd ">

<web-app>

…….

…..

….

<distributable/>

</web-app>

2)、需要启动一个服务cluster-service.xml

如果是以run -c all 来启动jboss服务,则默认是将cluster服务启动,无需做什么配置工作,只需确认相关文件是否存在即可。

确认…/server/all/deploy/下存在cluster-service.xml文件;

确认…/server/all/lib/下存在jgroups.jar文件,如果没有则重新安装jboss。

如果应用程序部署在default配置下,则需将上述的两个文件分别拷入

…/server/default/deploy/、…/server/default/lib/目录下。

配置完毕,如有异常,请查看日志。更详细的信息请参阅JBOSS.com上提供的admin.pdf。

2.2.3配置数据源,调整参数

各种类型的数据库,都可以根据%JBOSS_HOME%/docs/examples/jca/下的示例文档配置,更详细的参数配置可参阅JBOSS.com上的文档或…/docs/dtd/下的dtd定义来配置。

下面以oracle为例,提供我们在生产机环境的配置。

该xml文件需要被部署在%JBOSS_HOME%/server/all(or default)/deploy/下,对应的数据库驱动程序jar需copy至部署的配置的lib下,如…all/lib/或…default/lib/下。

<datasources>

  <local-tx-datasource>

    <jndi-name>jdbc/TestDataSource</jndi-name>

    <connection-url>jdbc:oracle:thin:@192.168.1.2:1521:test</connection-url>

    <!--<connection-url>jdbc:oracle:oci:@youroracle-tns-name</connection-url>-->

    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>

    <user-name>test</user-name>

<password>test</password>

    <!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool -->

    <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>

<!-- Checks the Oracle error codes and messages for fatal errors -->

<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>

<!-- sql to call when connection is created

<new-connection-sql>some arbitrary sql</new-connection-sql>

-->

<min-pool-size>5</min-pool-size><!—最小连接池数目-->

<max-pool-size>800</max-pool-size><!—最大连接池数目-->

<idle-timeout-minutes>5</idle-timeout-minutes><!—数据库连接空闲时间,单位为分钟,如果负载较大,可以设为5,如果一般,可以设为3-->

<!—在从连接池里获得一个连接之前先通过执行一个简单的SQL来校验connection的有效性-->

<check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>

  </local-tx-datasource>

</datasources>

 

如有多个数据源,则根据数据库的类型,配置完成,部署在上述路径下即可。

在代码中可通过JNDI来从连接池中获取连接。

……

Context ctx = new javax.naming.InitialContext();

DataSource ds = (DataSource)ctx.lookup("java:jdbc/TestDataSource ");

Connection con = ds.getConnection();

……

2.2.4配置jboss Connector参数

以下的配置是介绍load balancing所使用的协议(AJP 1.3 Connector)的服务,

更准确的有效参数以及HTTP/1.1 Connector的配置。

请参阅:

http://tomcat.apache.org/tomcat-5.0-doc/config/ajp.html

http://tomcat.apache.org/tomcat-5.0-doc/config/http.html

jboss3.2.3配置…/jbossweb-tomcat41.sar/META-INF/jboss-service.xml,jboss3.2.6配置…./jbossweb-tomcat50.sar/server.xml

<!-- jboss3.2.3 jboss-service.xml -->

<!-- A AJP 1.3 Connector on port 8009 -->

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"

address="${jboss.bind.address}" port="8009" minProcessors="5" maxProcessors="1000" enableLookups="true" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useURIValidationHack="false"

protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

<!-- jboss3.2.6 server.xml -->

<!-- A AJP 1.3 Connector on port 8009 -->

<Connector port="8009" address="${jboss.bind.address}"

enableLookups="false" redirectPort="8443" debug="0"

maxProcessors ="1000" minProcessors=”5” acceptCount="100"

protocol="AJP/1.3"/>

简单解释一两个参数(以tomcat5.0为准):

maxProcessors:最大并发数(连接数)

minProcessors:初始化时启动的最小的进程数

acceptCount:在当前connector的连接数达到最大时,允许进入等待队列的数目

connectionTimeout:连接超时时间,单位为毫秒

enableLookups:是否允许通过DNS lookups,返回远程客户端的机器名,如果设为false,则只能返回IP地址。该参数默认为true,如果不需要,可以禁掉,设为false,可以提高服务器的性能

maxPostSize设定允许透过POST上传参数的字节数,默认是2M(2097152),如果想禁掉该限制,则将该值设为一个小于或等于0 的值,如0、-1,如果所部署的应用中有上传工作,则需注意该配置

port="8009":这个值要与上述”1.4.3.workers2.properties”中的port一致

redirectPort="8443":是制定如果用了SSL机制访问服务的话,将会转向的端口,请参阅SSL相关的配置文档。

debug="0":这是配置日志级别的,可以忽略,因为该设置依赖于log4j的配置文件的设置,server/all/conf/log4j.xml

2.2.5访问URL如果是目录,不想显示该目录下文件

jboss3.2.3:

修改…/server/all(or default)/deploy/….sar/web.xml

jboss3.2.6/jboss4.0:

修改…/server/all(or default)/deploy/….sar/conf/web.xml

查看紫色斜体字符,设为false表示不列出目录。默认是设为true

<servlet>

<servlet-name>default</servlet-name>

<servlet-class>

org.apache.catalina.servlets.DefaultServlet

</servlet-class>

<init-param>

<param-name>debug</param-name>

<param-value>0</param-value>

</init-param>

<init-param>

<param-name>listings</param-name>

<param-value>false</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

2.2.6设置某个应用APP为默认应用

通常情况下,如果我们部署的应用目录为…/server/all(or default)/deploy/….sar/Test.war/,则我们应用部署完后,我们访问的路径类似于:http://…./Test/index.htm,如果我们想去掉Test这个APP Name,则如下设置即可。

在你需要设为默认应用的那个war目录,如上述Test.war/WEB-INF/ 下新建一个文件,文件名为jboss-web.xml内容如下:

<jboss-web>

<context-root>/</context-root>

</jboss-web>

 

重启服务后,以http://…./index.htm即可访问部署于Test.war/下的应用。

2.2.7配置数据源在APP应用加载前有效(各相关服务加载完毕)

这个经验的获知花费了一周多,后来结合jboss wiki/forum的文档,有了灵感,才得以解决。详细的介绍可参阅下面帖子,这是我发的一个求助帖,后来自己给解决后把答案贴上了。

http://www.jboss.com/index.html?module=bb&op=viewtopic&t=70600

http://www.javaworld.com.tw/jute/post/view?bid=9&id=129747&sty=1&tpg=1&age=0(中文)

以下简略说明一下。

我们部署一个应用(项目),应用启动之初一般都进行若干初始化吧,可能会从文件里、数据库里获取一些基础数据或配置项等等。

如果从数据库里获取基础数据,则我们必须确保配置的那些数据源及相关的服务在我们应用开始加载之前生效(已经启动或加载完毕);也就是说,在我们部署应用的一些初始化数据方法里要能正常获取数据。如果你不做一些设置,仅仅是将配好的ds_oracle_test.xml扔到…/deploy/下,那么很遗憾的告诉你,你的应用在初始化数据阶段根本不能从连接池中获取到连接,进而获取数据。如要达到你初始化数据的目的,请按照上面我提供的那个帖子连接去查看详细的信息,下面我仅提供解决方法。

1)、配置数据源:

<!--oracle_ds.xml-->

<datasources>

<local-tx-datasource>

<jndi-name>jdbc/test</jndi-name>

2)确认datasource依赖的服务名

透过http://wiki.jboss.org/wiki/Wiki.jsp?page=DependOnDataSource我们发现: 
======原文引用============== 
! Depending on a DataSource 
To specify a dependency on a DataSource deployment, you need to depend on the service which binds the DataSource into JNDI. 
The DataSource is not bound into JNDI until the service jboss.jca:service=DataSourceBinding,name=(jndi-name) has been 
started. The (jndi-name) is the value of the jndi-name attribute for your DataSource as defined in the *-ds.xml. 
The associated connection manager service is a function of the type of DataSource and its jndi-name attribute value. The 
MBean names for the types of DataSource deployments are:

1
2
3
4
5
6
7
8
9
10
no-tx-datasource jboss.jca:service=NoTxCM?,name=(jndi-name) local-tx-datasource jboss.jca:service=LocalTxCM?,name=(jndi-name) xa-datasource jboss.jca:service=XATxCM?,name=(jndi-name) no-tx-connection-factory jboss.jca:service=NoTxCM?,name=(jndi-name) tx-connection-factory jboss.jca:service=TxCM?,name=(jndi-name)

通过上述描述可以知道,数据源配置不同,则对应的依赖服务名信息也不同。
     根据上述描述及数据源配置,相关的服务名就是:

"jboss.jca:service=LocalTxCM,name=jdbc/test".

我修改了 ...sar/...war/WEB-INF/jboss-web.xml(如果不存在该文件,就创建它),然后运行jboss,就可以在初始化时找到datasource,并正确获取数据了!!!

配置文件如下:

1
2
3
 <jboss-web>   <depends>jboss.jca:service=LocalTxCM,name=jdbc/test</depends> </jboss-web> 

2.2.8日志配置,配置log4j.xml

JBOSS的日志模块集成了强大的LOG4J组件,我们可以直接配置$JBOSS_HOME/server/default/conf/log4j.xml,来定义日志级别或是将某几个类的日志输出到一个单独的文件。

以下简单罗列一下配置文件,具体的LOG4J的使用请参阅LOG4J文档或JBOSS的文档。

 <appender name="ImportCharge" class="org.jboss.logging.appender.DailyRollingFileAppender">

      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

      <param name="File" value="${jboss.server.home.dir}/log/importCharge.log"/>

      <param name="Append" value="true"/>

 

      <!-- Rollover at midnight each day -->

      <param name="DatePattern" value="'.'yyyy-MM-dd"/>

      <layout class="org.apache.log4j.PatternLayout">

         <!-- The default pattern: Date Priority [Category] Message\n -->

         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

      </layout>

   </appender>

 

  <logger name="com.tt.bs.action.corp.ImportChargeFileAction">

    <level value="DEBUG" />

    <appender-ref ref="ImportCharge"/>

  </logger>

 

   <category name=" com.tt.bs.action.corp.UploadChargeFileAction ">

     <priority value="DEBUG" />

     <appender-ref ref=" ImportCharge "/>

   </category>

 

categorylogger的写法都可以,建议用最下面的写法,这是文档中的标准写法。

上面的最后两个代码块,表示所列的两个ACTION将会引用“ImportCharge”这个appender,他们中的log.debug….的日志将会同时写入“importCharge.log”文件。

还可以参考:

http://wiki.jboss.org/wiki/Wiki.jsp?page=Logging

http://logging.apache.org/log4j/docs/

2.2.9配置contentType及charset,TOMCAT5.0下JSP统一配置

在JSP里头部一般要用page语句指定contentType及charset。

如:<%@ page contentType="text/html; charset=GBK" %>

或分开写:

– <%@ page contentType="MIME-Type" %>

– <%@ page pageEncoding="Character-Set" %>

该语句的作用是“指定由JSP页面生成的servlet生成的页面的MIME类型及charset”。默认的字符集是“ISO-8859-1”,如果不指定正确的charset,则我们的页面如有中文,是会乱码的。

我主要描述的是后者,charset,字符集。发生的场景位于一个页面包含另一个页面的情况下。

在JBOSS3.2.3下集成的是tomcat4.0*,用的是JSP1.2/Servlet2.3标准,要求JSP主页面和所包含页面中的“pageEncoding”必须一致,基于这一情况,我们一般做法是包含页面不指定“pageEncoding”,它的属性直接继承父页面即可。

在JBOSS3.2.6下,集成的是tomcat5.0*,要求每个JSP中必须有“pageEncoding”,换句话说,父页面中的指定对子页面没有影响。

有两个方法可解决该问题:

1、为每个页面指定“pageEncoding”,显然不可取!

2、用JSP2.0/Servlet2.4标准,统一配置一下WEB.XML,解析JSP时统一用一个“pageEncoding”.这样我们就不需要为每个JSP里加个声明了。

法2的配置细节如下:

配置$JBOSS-HOME/server/default/deploy/jbossweb-tomcat50.sar/TestCrm.war/WEB-INF/web.xml,为下面紫色斜体内容。

替换头部的命名空间声明:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

version="2.4">

………

………

<jsp-config>

  <jsp-property-group>

     <description>jsp encoding example</description>

     <display-name>JSPConfiguration</display-name>

     <url-pattern>*.jsp</url-pattern>

     <el-ignored>true</el-ignored>

     <page-encoding>GBK</page-encoding>

     <scripting-invalid>false</scripting-invalid>

     <include-prelude></include-prelude>

     <include-coda></include-coda>

  </jsp-property-group>

</jsp-config>

</web-app>

说明:<jsp-config>的配置说明

你可以在<jsp-property-group>中使用以下的配置元素:

Element

描述

<el-ignored>

如果设置为true, 在匹配指定的URL模式的JSP 页面中,EL 表达式被当作常规的文本而不是EL 表达式。当移植看起来有EL表达式文本的JSP 1.2页面到JSP 2.0的时候,这非常有用。在已经转换为JSP 2.0的页面中,你可以使用一个新增的“elIgnoredpage”属性来选择EL是否有效

<scripting-invalid>

如果设置为true, 在某个匹配的JSP页面使用脚本

<page-encoding>

为匹配指定的URL模式的JSP页面指定编码。这是一个可选的配置(在每一个JSP页面中指定页面的编码),并且对于JSP页面来说这是使用某些文件编码(比如:EBCDIC)唯一的办法

<include-coda>

为所有匹配指定的URL模式的JSP页面的末尾自动包含一个文件,而指定相关的context路径。你可以在一个<jsp-property-group>中多次使用,或者通过多个<jsp-property-group>来实现

<include-prelude>

为所有匹配指定的URL模式的JSP页面的开头自动包含一个文件,而指定相关的context路径。你可以在一个<jsp-property-group>中多次使用,或者通过多个<jsp-property-group>来实现

<is-xml>

如果设置为true, 所有匹配指定的URL模式的JSP页面使用JSP XML语法(它们是JSP Document)

可参见http://www.oreilly.com.cn/news/jsppart2.php?c=java

2.3 JVM最小、最大内存的设定

如果采取默认配置的话,JVM默认只能分配到最大64M内存(默认大小和JVM版本有关系),这在生产环境里肯定是不够,将会导致用户通过WEB方式无法访问应用服务,但是系统进程中,JBOSS服务却没有宕掉的奇怪现象。

修改$jboss/bin/run.conf文件,找到“#JAVA_OPTS=”,如果没有该字符串,请添加,并去掉最前面的“#”,修改该字符串(含双引号)为JAVA_OPTS="-server -Xms512m -Xmx512m”,这是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。

更详细的介绍请参见http://java.sun.com/docs/hotspot/VMOptions.html

2.4 OS字符集问题

如果应用服务需要OS支持GBK字符集,修改文件/etc/sysconfig/i18n

内容为:

LANG="zh_CN.GB18030"

LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"

SUPPORTED="zh_CN.GB18030:zh_CN:zh"

SYSFONT="lat0-sun16"

SYSFONTACM="8859-15"

2.5 JBOSS服务的启动、停止

$JBOSS_HOME以及%JBOSS_HOME%为jboss在linux、win下安装的路径,如果配置了,直接照样引用即可。

启动:

1、for linux: $JBOSS_HOME /bin/run.sh

2、for win :%JBOSS_HOME%/bin/run.bat

关闭/停止:

1、for linux: $JBOSS_HOME /bin/ shutdown.sh –S

2、for win :%JBOSS_HOME%/bin/ shutdown –S

可以用tail –f  $JBOSS_HOME /server/default/log/server.log来查看jboss服务的启动或停止的信息。

3.附apache https 服务器的安装

以下为李响、谭述纲提供。感谢他们。

apache https 服务器的安装

apache 1.x版本需要装第三方的模块,mod_ssl,由于我们公司全部采用的是apahce2.x,所以这个版本的安装不做讨论

apache 2.0以上自带ssl支持,

但首先要安装openssl,一般系统自带的openssl版本较低,最好下载

源码安装,例如openssl-0.9.7i

./config

Make

Make test

make install

就可以了

在apache2源码目录下执行

./configure --prefix=/usr/local/apache --enable-module=so --enable-shared=max --enable-ssl=static  --with-ssl=/usr/local/ssl  --enable-mods-shared=all

然后

Make

make install

修改httpd.conf 加入SSL支持部分,这里指定使用SSL v2协议

SSLProtocol -all +SSLv2
SSLCipherSuite SSLv2:+HIGH:+MEDIUM:+LOW:+EXP

 

生成认证证书

先建立一个 CA 的证书, 
首先为 CA 创建一个 RSA 私用密钥, 
[S-1] 
openssl genrsa -des3 -out ca.key 1024 
系统提示输入 PEM pass phrase,也就是密码,输入后牢记它。 
生成 ca.key 文件,将文件属性改为400,并放在安全的地方。 
[S-2] 
chmod 400 ca.key 
你可以用下列命令查看它的内容, 
[S-3] 
openssl rsa -noout -text -in ca.key 
利用 CA 的 RSA 密钥创建一个自签署的 CA 证书(X.509结构) 
[S-4] 
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt 
然后需要输入下列信息: 
Country Name: cn 两个字母的国家代号 
State or Province Name: An Hui 省份名称 
Locality Name: Bengbu 城市名称 
Organization Name: Family Network 公司名称 
Organizational Unit Name: Home 部门名称 
Common Name: Chen Yang 你的姓名 
Email Address: sunstorm@263.net Email地址 
生成 ca.crt 文件,将文件属性改为400,并放在安全的地方。 
[S-5] 
chmod 400 ca.crt 
你可以用下列命令查看它的内容, 
[S-6] 
openssl x509 -noout -text -in ca.crt 
下面要创建服务器证书签署请求, 
首先为你的 Apache 创建一个 RSA 私用密钥: 
[S-7] 
openssl genrsa -des3 -out server.key 1024 
这里也要设定pass phrase。 
生成 server.key 文件,将文件属性改为400,并放在安全的地方。 
[S-8] 
chmod 400 server.key 
你可以用下列命令查看它的内容, 
[S-9] 
openssl rsa -noout -text -in server.key 
用 server.key 生成证书签署请求 CSR. 
[S-10] 
openssl req -new -key server.key -out server.csr 
这里也要输入一些信息,和[S-4]中的内容类似。 
至于 extra attributes 不用输入。 
你可以查看 CSR 的细节 
[S-11] 
openssl req -noout -text -in server.csr 
下面可以签署证书了,需要用到脚本 sign.sh 
[S-12] 
sign.sh server.csr 
就可以得到server.crt。 
将文件属性改为400,并放在安全的地方。 
[S-13] 
chmod 400 server.crt 
删除CSR 
[S-14] 
rm server.csr

Sign.sh在openssl目录中没有。我是在mod_ssl第三方模块中提取的。

把生成好的文件放在相应的认证目录下。如果没有相应的目录,可以手工建立

以SSL支持的方式启动apache

/usr/local/apache/bin/apachectl startssl

转载于:https://www.cnblogs.com/wangbin/archive/2009/06/19/1507106.html

Apache安装及jboss部署说明文档1相关推荐

  1. Apache安装及jboss部署说明文档

    Apache安装及jboss部署说明文档 本文为转载 http://oss.org.cn/man/newsoft/jboss.htm#_Toc124845774, 文章内容的准确性有待进一步实验 1 ...

  2. SkeyeVSS综合安防监控视频云服务Windows、Linux跨平台安装部署说明文档

    一.环境准备 操作系统: Linux Ubuntu/CentOS 64位 Windows 7/Server 2008 r2以上/10/11 64位 内存:2G以上 CPU: 双核2.0GHz以上 二. ...

  3. Linux下Jboss安装使用+Jboss部署脚本

    Jboss是Java EE应用服务器(就像Apache是web服务器一样),专门用来运行Java EE程序的. JBoss的运行需要JAVA环境的支持,所以我们首先安装JDK. 本章环境: 系统:Ce ...

  4. 游戏服务器环境部署说明文档,游戏服务器环境安装包

    游戏服务器环境安装包 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. expor ...

  5. JRebel热部署说明文档

    IntelliJ IDEA的JRebel插件包括JRebel代理,可帮助您自动生成JRebel配置,实现热部署.只需单击一下,即可为应用程序和服务器启用JRebel,并改善了IDE中的调试支持. 1. ...

  6. Open-Falcon安装部署配置说明文档

    @(架构师之路) Open-Falcon安装部署配置说明文档 欢迎关注作者简书 csdn传送门 文章目录 Open-Falcon安装部署配置说明文档 单机安装 环境准备 1. 环境准备 2. 从源码编 ...

  7. linux 文档属于apache,Apache 安装和使用文档

    Apache 安装和使用文档 更新时间:2009年11月26日 00:34:37   作者: Apache安装和使用文档 一.准备工作: 1台PC机,安装linux操作系统 参考文档linux安装.d ...

  8. 如何安装husky_统一用户认证平台(Husky)说明文档

    统一用户认证平台(Husky)说明文档 1. 架构说明 主要工具 工具 版本 说明 python 3.6 2.2.15 web后端框架 16.13.1 前端框架(spa应用) mysql 5.7 数据 ...

  9. 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(二):Apache安装和配置

    基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...

最新文章

  1. UML类图新手入门级介绍
  2. 彻底解决_OBJC_CLASS_$_某文件名“, referenced from:问题
  3. 程序员Linux学到什么程度,Linux学到什么程度,才可以找到合适的工作?
  4. 多种特征提取算法比较汇总
  5. 电气论文:基于粒子群算法的梯级水火电力系统优化调度【有代码】
  6. python win32库与subprocess_依赖管理:Python2.7需要subprocess32
  7. MOCTF-Web-死亡退出
  8. C#委托,事件理解入门 (译稿)
  9. 提取多个字段_【博客翻译】建筑物轮廓线提取以及损坏分类
  10. [原创]JSLint-Toolkit v1.2 - Update with qooxdoo1.3
  11. Topological Spaces(拓扑空间)
  12. c语言计算圆周率的方法,c语言学习之不同方式计算圆周率
  13. [乐意黎转载]从零开始学习jQuery (十) jQueryUI常用功能实战
  14. html5图片任何改不透明度,如何巧改插入图片的透明度
  15. opencore添加Linux引导,黑苹果OpenCore引导详细教程
  16. android studio红色下划线,如何在Android Studio中为文字加下划线?
  17. 文字转语音软件哪个好,这一款值得推荐
  18. OceanBase | 一文了解OBCA认证内容
  19. python飞机游戏视频教程_10分钟教你用Python做个打飞机小游戏超详细教程
  20. 第一行代码 第三版 第11章网络技术 11.6.1 Retrofit 应用 报错:android.system.ErrnoException: isConnected failed: ECONNRE

热门文章

  1. 移动开发—Less基础与安装
  2. ip、子网掩码、默认网关以及传输过程
  3. 简单的文本文件加密小程序
  4. 滴滴为什么接不到长途单?
  5. 我的是50M宽带,速度有5M/s,难道是百度网盘不给力?
  6. 拍摄女生人像,摄影师觉得最大的困难是什么?
  7. 去年买彩票中了400多万
  8. 没有文化适合自媒体创业吗
  9. 终于把Redis场景设计搞清楚了,需要掌握的都在这了
  10. And seeing the whole machine market