JBoss学习和应用
2010年11月15日 blxt项目相关
最近项目要求把tomcat中开发的项目研究发布到一个更加强大的web服务器,我做了一些调查,选择了与tomcat的一条路线的jboss.原因主要是jboss的开源和免费,当然据说tomcat到jboss更加容易上手。这个过程对jboss有了一些了解和认识,当然现在只是发布和运行成功了。对于jboss还有很多东西也还是不明白,毕竟现在只是一个纯的web项目,没得j2ee的ejb,分布式的东西。现在就自己的学习和实践结果总结一下。
一、jboss服务器的安装:
在官网上下载,有很多版本。这里选择的是JBoss-5.1.0.GA(jdk1.6版本)。只需要解压就可以了,需要配置jdk,jboss的环境变量,网上有很多资源,这里不详细说了。
Jboss通常占用的端口是1098,1099,4444,4445,8080,8009,8083,8093这几个,
默认端口是8080:
在windows系统中:
1098、1099、4444、4445、8083端口在/jboss/server/default/conf/jboss-service.xml中
8080端口在/jboss-5.1.0.GA/server/default/deploy/jbossweb.sar中。
Xml代码
- <!-- A HTTP/1.1 Connector on port 8080 -->
- <Connector port="8080" address="${jboss.bind.address}"
- maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
- emptySessionPath="true"
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="20000" disableUploadTimeout="true"/>
<!-- A HTTP/1.1 Connector on port 8080 --><Connector port="8080" address="${jboss.bind.address}"maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"emptySessionPath="true"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true"/>
把里面的8080改为80。JBOSS启动之后就可以用http://localhost/访问。
访问的ip(address):
JBOSS 4.2以上版本服务启动如果不加任何参数的话,只监听127.0.0.1,就是说只能用127.0.0.1或者localhost访问,用本机的对外地址 访问不了,同一网络内别的机子没法访问。除非你用参数-b ip地址 来绑定监听的地址才可以。
这和以前版本的JBOSS不一样,以前版本的不加任何参数是监听本机所有的IP地址,现在必须使用参数-b 0.0.0.0才可以监听全部地址。
======================================
1.
附,以下是具体解决方法:
在jboss-4.2.2.GA/bin目录下,新建start.bat文件,录入如下内容:
run.bat -b 0.0.0.0
保存即可。使用你新制作的start.bat文件启动服务之后就可以IP访问了。
======================================
2.
找到JBOSS_HOME的/server/default/deploy/jboss-web.deployer/server.xml文件,
找到
Xml代码
- <!-- A HTTP/1.1 Connector on address 8080 -->
- <Connector port="8080" address="${jboss.bind.address}"
- maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
- emptySessionPath="true"
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="20000" disableUploadTimeout="true"/>
<!-- A HTTP/1.1 Connector on address 8080 --><Connector port="8080" address="${jboss.bind.address}"maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"emptySessionPath="true"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true"/>
将其中的${jboss.bind.address}改为0.0.0.0
在myEclipse中的配置,如tomcat,在myEclipe/server中配置jboss 5x项目,jdk要配置上相应版本。
二、项目的环境:
服务器:
tomcat 6.0
JBoss-5.1.0.GA(jdk1.6版本):
删除D:/jboss-5.1.0.GA-jdk6/jboss-5.1.0.GA/server/default/deploy/blxt.war/WEB-INF/lib下面的:
xml-apis-1.0.b2.jar;xercesImpl-2.6.2.jar;xmlparserv2.jar;
javax.servlet.ServletException: OncePerRequestFilter just supports HTTP requests:
解决了,删除应用的lib下的几个jar包:servlet-api.jar相关的包 (geronimo-servlet_2.5_spec-1.2.jar jsp-api.jar)
clob类型长度大于最大值(一系列数据库问题):换用oracle驱动(Oracle_10g_10.1.0.2_JDBC_ojdbc14.jar),删除commonlib.jar(lib下的,不是client下面的)
发布的时候,将start.bat 放在/JBoss-5.1.0.GA/bin 目录下面。
java环境:
jdk6.0
数据库环境:
oracle 10g
三、实践相关
(1)直接用myEclipe6.0发布项目:
(这里代码没有什么变化,还是spring管理bean的生成和事务、连接池)
由于是在tomcat开发之后部署的时候迁移到jboss中的,所以会遇到很多问题。开始用myEclipst直接部署项目,就遇到了许多包的问题,通过网上查资料和自己的分析思考基本都得到解决。可以参看上面的项目环境,当然这有一定的局限性。思想是最重要的,遇到问题先要分析,可以上网去找,然后再分析。其中有oracle驱动的问题让我郁闷了很久,由于用到了大文本(clob),要用oracle新的驱动包,在tomcat中加了这个满足要求的包,但是到了jboss中又出现大文本的问题,又换了n多包都不行。这个时候看到了网上用jndi的配置,就转到了这个方向(参考下面的jndi)。结果了,折了一大圈又回来。spring的事务对jndi的支持不够(项目中用到了spring管理bean的生成和事务),如果强行换成那样,代码就要做很多修改,而我想的就是尽量不修改代码。快要崩溃了,结果偶然发现了,去掉那个oracle驱动也能运行。呵呵,沿着这个终于找到了,apache的commonlib.jar带有oracle的驱动包,在tomcat的中选择的是我加入的包,但是在jboss中就变成随机的了。把commonlib.jar干掉了,ok!当时很激动啊,这两天被折磨的哟。
(2)用jboss的jndi,初始化spring的dataSource.
由于oracle包的问题走到了这里,以前没有了解过jndi的东西,这里自己的研究也学了不少东西。jboss的可以配置多个数据源,这就为分布式和ejb提供了基础,当然也包括分布式事务(jta).
jboss的jndi配置:
配置步骤开始:将部署到TOMCAT中的工程文件夹(blxt)名称改为blxt.war;将部署到TOMCAT中的工程文件夹(blxt)名称改为blxt.war;
配置步骤1 . 由于jboss会自动查找server/default/deploy目录下的 **-ds.xml文件.并读取其中内容.来得到相应的DataSource,我的文件具体内容如下:
oracle-ds.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- ===================================================================== -->
<!-- -->
<!-- JBoss Server Configuration -->
<!-- -->
<!-- ===================================================================== -->
<!-- See http://www.jboss.org/community/wiki/Multiple1PC for information about local-tx-datasource -->
<!-- $Id: oracle-ds.xml 88948 2009-05-15 14:09:08Z jesper.pedersen $ -->
<!-- ==================================================================== -->
<!-- Datasource config for Oracle originally from Steven Coy -->
<!-- ==================================================================== -->
<datasources>
<local-tx-datasource>
<jndi-name>blxtORCLDS</jndi-name>
<use-java-context>false</use-java-context>
<connection-url>jdbc:oracle:thin:@192.168.10.130:1521:oradb</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>blxt</user-name>
<password>blxt</password>
<min-pool-size>50</min-pool-size>
<max-pool-size>200</max-pool-size>
<blocking-timeout-millis>5000</blocking-timeout-millis>
<idle-timeout-minutes>2</idle-timeout-minutes>
<metadata>
<type-mapping>Oracle10g</type-mapping>
</metadata>
</local-tx-datasource>
<!-- 无用,可以配置多种多个 -->
<local-tx-datasource>
<jndi-name>Z</jndi-name>
<use-java-context>false</use-java-context>
<connection-url>jdbc:oracle:thin:@10.1.1.1:1521:z</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>z</user-name>
<password>z</password>
<min-pool-size>50</min-pool-size>
<max-pool-size>200</max-pool-size>
<blocking-timeout-millis>5000</blocking-timeout-millis>
<idle-timeout-minutes>2</idle-timeout-minutes>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
配置步骤2 . 在工程/server/default/blxt.war中web.xml文件所在位置增加jboss-web.xml文件,内容如下:
jboss-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<resource-ref>
<res-ref-name>blxtORCLDS</res-ref-name>
<jndi-name>blxtORCLDS</jndi-name>
</resource-ref>
<!-- 未用的 -->
<resource-ref>
<res-ref-name>orclZ</res-ref-name>
<jndi-name>Z</jndi-name>
</resource-ref>
</jboss-web>
配置步骤3 . web.xml下面配置:
blxt的web-info:web.xml文件中添加:
<!-- jboss部署需要 -->
<resource-ref id="blxtORCLDS">
<res-ref-name>blxtORCLDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
配置步骤4 . 在spring中得到数据源:
<!-- jboss用 -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>blxtORCLDS</value>
</property>
</bean>
到此配置完成,但是由于spring对jndi事务的支持不足,还有这种配置多用于分布式事务,这种方式在这里(纯的、代码已经确定的项目)显得不合理。
这里暂时选择了第一种发布方式。事务和连接池都交给项目管理,在spring中配置。
暂时总结如上,当然以后的学习过程也就是我的完善过程。……
2010年11月15日 blxt项目相关
……
参考主要文章:
jboss与tomcat使用经验:http://www.77169.com/classical/HTML/39445.html
Jboss与tomcat区别:http://tech.sina.com.cn/h/2008-09-19/1208811039.shtml
JBoss学习和应用相关推荐
- jboss学习 - vfs---转载
jboss的VFS是为了解决什么问题,他为什么有用呢 在jboss中有很多类似的资源操作的代码都分散在程序的各个地方,大多数情况下代码首先确定操作的资源的类型,比如是文件或者是文件夹,通过URL加载的 ...
- 大学学了java可以做点什么_学习Java的,大学毕业一般从事些什么工作?
展开全部 我这是拷贝的,62616964757a686964616fe59b9ee7ad9431333332643361不过也就差不多了,说实话,java的东西太多了.还是要到工作的时候慢慢用的,学好 ...
- Java的学习——培训或自学
JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢 ...
- java学习顺序(学习路线图)
给你参考参考 Java学习路线图 作者:马士兵 1:J2SE 面向对象-封装.继承.多态 内存的分析 递归 集合类.泛型.自动打包与解包.Annotation IO 多线程.线程同步 TCP/UDP ...
- 【MLDN_李兴华】JAVA学习攻略+新书导读
<Java开发实战经典>--学习攻略 首先需要为读者说明的是,<Java开发实战经典>,如图1所示,不只是一本纯粹讲解基础的书,里面更多的内容是为JAVA E ...
- java学习之路---java学习的方法和java学习路线
转载于: http://blog.csdn.net/zhangerqing 前段时间逛论坛,总会有很多新手很迷茫,问到:到底该怎么学好Java,这个问题很重要,尤其对于像我们这样大多数都是靠自学的人来 ...
- 20100928_Dawning_Jboss学习笔记
Jboss学习笔记 运行步骤: 将项目src那一块打包成为HelloWorld.jar (使用eclipse中自带的打包工具)然后把该文件拷贝到jboss安装目录/server/default/dep ...
- [原创 - 尚学堂科技 - 马士兵老师]
JAVA自学之路 一:学会选择 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_1.html] 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多 ...
- java自学路线图_JAVA自学路线图
首先要学JavaSE,与此同时,和JavaSE的学习同步,建议大家研究一下数据结构与算法. 在这儿之后,你可以选择向J2ME.或者Java GUI.Socket编程等方向努力,但是通过第一篇的办法,你 ...
最新文章
- 前后端分离的探索(二)
- 万字长文总结机器学习的模型评估与调参 | 附代码下载
- spring核心:bean工厂的装配 6
- .NET 时间格式 ----------摘自MSDN
- 用ghost备份和还原Linux系统
- OpenCV-绘制旋转矩形
- openwrt 自动签到插件-食用指南
- YDOOK: USB 转 TTL 串口模块接线图
- 数据结构—顺序表详解
- Appium安装手册详解
- 投票系统(投票问题可多选、带柱状图)
- 从零开始学习区块链技术
- html5 mp4转换ogv格式,如何将mp4视频转换成ogv高清视频呢
- 给我疯狂内卷!GitHub再现星标86K面试手册,37K!妥妥的
- 去除Android状态栏的广告推送
- ASBR(自治系统边界路由器)
- 动态申请权限---通讯录 及获取通讯录列表
- 2019年TI杯 简易电路特性测试仪 制作过程(9)——实际测试效果 20/05/24
- 在服务器端运行JavaScript文件(一)
- CCS 软件仿真和硬件仿真结果不同解决办法