最近接到一个项目,说要用到JBOSS来实现某些功能操作,而且底层系统是LINUX,为了在LINUX能够更好的实现多些应用,做JBOSS在Asianux 3.0 SP1上面的测试。
一直都在说JBOSS,那到底JBOSS是什么呢?
JBoss是全世界开发者共同努力的成果,一个基于J2EE的开放源代码的应用服务器。 因为JBoss代码遵循LGPL许可,你可以在任何商业应用中免费使用它,而不用支付费用。Jboss支持EJB 1.1和EJB 2.0的规范,它是一个为管理EJB的容器和服务器。类似于Sun's J2SDK Enterprise Edition(J2EE),Jboss的目标是一个源代码开放的J2EE环境。但是Jboss核心服务仅是提供EJB服务器。JBOSS不包括 serverlers/JSP page 的WEB容器,当然可以和Tomcat或Jetty绑定使用。
JBoss还具有如下六大优点:
1、JBOSS是免费的,开放源代码J2EE的实现,它通过LGPL许可证进行发布。
2、JBOSS需要的内存和硬盘空间比较小。
3、安装非常简单。先解压缩JBOSS打包文件再配置一些环境变量就可以了。
4、JBOSS能够"热部署",部署BEAN只是简单拷贝BEAN的JAR文件到部署路径下就可以了。如果没有加载就加载它;如果已经加载了就卸载调,然后LOAD这个新的。
5、Jboss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。
6、用户可以直接实施J2EE-EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。
JBoss的安装和配置可以直接拷贝使用,但是要改动 %JBOSS-HOME%binrun.bat里JAVA-HOME的设置,改成本机JDK的目录。运行run.bat来启动JBOSS
关闭JBOSS:关闭JBOSS的进程:按"CTRL + C"
JBoss的目录结构
1、bin:开始和停止JBoss的地方。
其中有两个主要的批处理文件:run.sh和shutdown.sh。要启动jboss只要执行run.sh文件即可;要停止JBoss必须执行shutdown.sh。
注意,shutdown.bat文件直接执行并不会自动停止JBoss,它必须要输入参数,参数意义如下:
h显示帮助信息;D设置系统属性;-停止处理选项;s停止用JNDI URL指定的远程服务;n通过制定JMX名字来停止服务;a适配到指定的JNDI名称的远程服务;u指定用户名称;p指定用户密码;S停止服务器;e从虚拟机退出;H暂停。
一般,我们使用S选项来停止服务器。即使执行shutdown.sh -S。
2、docs:放置jboss的例子、测试脚本和各种脚本配置文件的DTD。
3、lib:放置jboss所需要的部分jar包文件。
4、client:放置EJB客户端运行时所需要的jar包。
5、server:放置各启动类型的服务器端EJB配置所需要的文件等。
6、backup
以80端口服务
修改这个文件: {%JBOSS_HOME%}serverdefaultdeployjbossweb-tomcat41.sarMETA-INFjboss-service.xml
在"8080"的配置后加入以下代码
port="80" minProcessors="5" maxProcessors="100"
enableLookups="true" acceptCount="10" debug="0"
connectionTimeout="20000" useURIValidationHack="false"/>
重新启动JBOSS就OK了
JBOSS的启动过程
设置环境变量 JBOSS_CLASSPATH (可以自己加上安全管理器和xml解析器)
a) %JBOSS_CLASSPATH%;
b) %JAVA_HOME%/lib/tools.jar;
c) run.jar
d) ../lib/crimson.jar;
设置启动参数JAXP(xml解析器和相应工厂)
启动
设置配置信息
读取配置文件jboss.properties,保存在系统属性中(System.properties)
设置缺省属性jboss.home和java.security.auth.login.config
创建MBeanServer.的实例:
把配置文件和补丁文件所在的目录指定给特定的远程类加载器Mlet
加载保存配置文件(mlet会自动在配置文件目录中查找)
初始化并启动MBean
配置服务ConfigurationService
加载配置文件
保存配置
服务控制ServiceControl
初始化服务程序(init方法)
启动服务程序(start方法)
在JBOSS中发布文件
1、制作JSP的war部署文件
用"jar cvf hello.war index.jsp main.jsp"的方式生成把index.jsp和main.jsp文件加入到hello.war中。把生成的hello.war拷贝到jboss安装 目录serverdefaultdeploy下,部署成功。用""或"http: //localhost:8080/hello/index.jsp"这两个地址进行测试。
2、制作Servlet的war部署文件
A、 用"javac -classpath "%CLASSPATH%;%jboss_home%serverdefaultlibjavax.servlet.jar" HelloWorld.java"的形式编译HelloWorld.java(这是一个Servlet)得到HelloWorld.class
B、写一个web.xml配置文件
代码如下:
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"">
HelloWorld
hello.HelloWorld
HelloWorld
/HelloWorld
每个标记必须小写,否则会出错。
C、先在c:servlet下建立一个web-inf目录,在目录中放入web.xml文件。
D、在web-inf目录下建立一个classes目录,放入编译好的HelloWorld.class文件
E、在c:servlet下执行jar cvf hello.war *.*,很快就生成了一个名为hello.war的文件,接着把hello.war复制到jboss的安装目录serverdefaultdeploy下完成部署。
3、也可以不打包,把文件放在deploy下的同名文件夹下也可以。比如原来是制作成hello.war文件,可以建立一个名称为hello.war的文件夹,把要发布的文件拷贝到这个目录底下也可以发布成功。
补充
1、JBoss的默认端口是8080
2、JBoss的最新版是4.0测试版,但建议使用稳定的3.2发行版
3、对于NT和Win2k系统如果你要安装NT或Win2k服务的话,可以把jboss加在系统服务中,避免你每次需要到jboss目录下运行run.sh命令,只是当系统启动时,自动启动jboss服务器。
下面,介绍一下JBOSS安装时候所需环境:
1,tomcat的环境:
[root@localhost ~]# rpm -qa | grep tomcat
tomcat5-admin-webapps-5.5.23-0jpp.3.0.3.1AX
tomcat5-server-lib-5.5.23-0jpp.3.0.3.1AX
tomcat5-servlet-2.4-api-5.5.23-0jpp.3.0.3.1AX
tomcat5-common-lib-5.5.23-0jpp.3.0.3.1AX
tomcat5-jsp-2.0-api-javadoc-5.5.23-0jpp.3.0.3.1AX
tomcat5-webapps-5.5.23-0jpp.3.0.3.1AX
tomcat5-jasper-5.5.23-0jpp.3.0.3.1AX
tomcat5-servlet-2.4-api-javadoc-5.5.23-0jpp.3.0.3.1AX
tomcat5-jasper-javadoc-5.5.23-0jpp.3.0.3.1AX
tomcat5-jsp-2.0-api-5.5.23-0jpp.3.0.3.1AX
tomcat5-5.5.23-0jpp.3.0.3.1AX
tomcat需要在5.0以上的版本才能够兼容,不然会有些问题,根据官方网站上面的说法;在Asianux上面tomcat是上面一些包。
2,apache的环境:
[root@localhost ~]# rpm -qa | grep apache
ant-apache-bsf-1.6.5-2jpp.2.1AX
ant-apache-bcel-1.6.5-2jpp.2.1AX
rfapache-1.1.0-2
ant-apache-log4j-1.6.5-2jpp.2.1AX
ant-apache-oro-1.6.5-2jpp.2.1AX
ant-apache-resolver-1.6.5-2jpp.2.1AX
ant-apache-regexp-1.6.5-2jpp.2.1AX
3,mysql的环境:
[root@localhost ~]# rpm -qa | grep mysql
mysql-connector-odbc-3.51.12-2.2
mysql-devel-5.0.22-2.2.1.1AX
php-mysql-5.1.6-15.1AX
snort-mysql+flexresp-2.7.0.1-3.1RF3
libdbi-dbd-mysql-0.8.1a-1.2.2
mysql-server-5.0.22-2.2.1.1AX
snort-mysql-2.7.0.1-3.1RF3
mod_auth_mysql-3.0.0-3.1
mysql-5.0.22-2.2.1.1AX
qt4-mysql-4.3.1-2.3RF3
mysql-bench-5.0.22-2.2.1.1AX
freeradius-mysql-1.1.3-1.2
4,JDK的环境:
[root@localhost ~]# rpm -qa | grep jdk
jdk-1.6.0_06-fcs
jdksetup-4.0-6AX
ldapjdk-4.18-2jpp.3AXS3
5,JBOSS的安装
直接把JBOSS的压缩包解压到:/usr/local/jboss-4.2.2.GA下,修改JBOSS的run.sh脚本相关的内容后可以用./run.sh来启动jboss。
所需环境变量:
#set java environment
export JAVA_HOME=/usr/java/jdk1.6.0_06
export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
export CLASSPATH=.:$JAVA_HOME/lib
#set jboss environment
export JBOSS_HOME=/usr/local/jboss-4.2.2.GA
export PATH=$PATH:$JBOSS_HOME/bin:$HOME/bin:/sbin:/usr/bin:/usr/sbin
# run.sh
(因为配了"PATH"所以在哪个目录下都可以执行)。然后出现在了jboss的log信息
访问出现jboss页面,jboss看式O了
但你可以试一下http://你的ip地址:8080访问一下,或远程局域网其它机器访问。出现在404 问题又来了
问题:Redhat AS4服务器(多网卡)上安装Jboss 4.2.2 GA后,只能从本地地址localhost或127.0.0.1访问80或8080端口,也即,而不能使用本机的公网地址访问
开始以为是防火墙的问题,修改了防火墙策略,还是不行。
用以下命令参看
# netstat –na|grep 8080
出现tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 发现绑定到127.0.0.1上:
因此应该是jboss启动时候绑定到了本地回路(Local Loopback )lo网卡上了
解决:修改$JBOSS_HOME/server/default/deploy/jboss-web.deployer/server.xml,将
${jboss.bind.address}修改为0.0.0.0,允许从eth0,eth1,lo都能够访问jboss 8080端口
修改后访问http://你的ip地址:8080,jboss页面出来了! jboss到这才OK了。
主要的操作配置如上所说,现在在JBOSS上面只是实现简单的WEB应用,更多的应用以后会不断补充!!
阅读(2108) | 评论(0) | 转发(0) |