jboss文档

关于JBoss

         JBoss,一个领先的java开源,继承和开发基于J2EE的完整服务实现,JBoss提供JBossServer,基本的EJB容器及JMX框架。它也为JMS系统提供JBossMQ,为JTA事务提供JBossTX,为CMP持久化提供JBossCMP,为基于JAAS的安全性提供JBossSX,以及为JCA连接提供JBossCX。为支持Web组件,比如ServletJSPJBoss提供了抽象集成层。而这些抽象层的继承服务实现可以由第三方Servlet引擎提供,比如TomcatJBoss使得开发者能够通过JMX混合应用这些组件,即借助于替换JMX兼容的组件实现完成这项任务。同时,这些JBoss组件之间不会产生任何影响,因此JBoss全部都是模块化的

JBoss是基于JMX的完整J2EE实现:JBoss的目标是提供完整的开源j2ee服务栈。JMXjava管理拓展。是集成软件的最好利器。JMX提供了公共的平台以允许集成模块。容器及插件,下图展示了JMX总线是如何于JBoss架构进行交互的

 

 

1.1 JMX - 层次

JMX是一个可复用框架,它为远程(Remote)和本地(Local)管理工具扩展了应用。它的架构是层式架构。他们是实现层(instrumentation layer)、代理层(agent layer)和发布层(distribution layer)。其中,发布层还在等待未来的标准化。简要的表述是,用户使用管理BeanMBean来提供获得相应资源的实现方法。实现层实现相关的特性资源并将它发布于JMX相关应用中,它的代理层控制和发布相应的注册在MBeanServer代理上的管理资源。.

 

 

Figure 2-1 JMX层次模型

1.2 JBoss主要模块

主要的JBoss模块是在MeanServer上的可管理MBean.JBoss EJB容器是JBoss服务器的核心实现。它有两个特性,第一是在运行期产生EJB 对象的StubSkeleton类,第二是支持热部署。
2.JBossNS
JBoss命名服务用来定位对象和资源。它实现了JNDI J2EE规范
.
3.JBossTX
是由JTA/JTS支持的交易管理控制
.
4.
部署服务支持EJB(jar)Web应用文档(war)和企业级应用文档(ears)的部署。它会时刻关心J2EE应用的URL情况,一旦它们被改变或出现的时候将自动部署。

5.JBossMQ
使Java 消息规范(JMS)的实现。

6.JBossSX
支持基于JAAS的或不支持JAAS机制的安全实现。

7.JBossCX
实现了部分JCA的功能。JCA制订了J2EE应用组件如何访问基于连接的资源。

8.Web
服务器支持Web容器和Servlet引擎。

JBoss起步

2.1下载和安装JBoss

本版本为jboss4.0.5,为运行JBoss4.0,必须提供Java1.4Java1.5虚拟机。并且JAVA_HOME环境变量已经设置好,使用ANT-1.6.5以上版本,并且ANT_HOME环境变量已经设置好

http://www.jboss.org/download/下载JBoss应用服务器。在下载完成之后,将它解压到机器合适的位置,(路径中不能包含空格如:Program Files,这样会导致错误)

2.2启动服务

JBoss的主安装目录的bin目录下找到如下脚本文件,执行run.bat。显示如下消息

10:44:33,125 INFO  [JkMain] Jk running ID=0 time=0/94  config=null

10:44:33,187 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Bran

ch_4_0 date=200610162339)] Started in 1m:59s:640ms

表明JBoss启动成功。

JBoss监听的HTTP端口为8080,通过Web浏览器就可以访问JBoss服务了

2.3JMX控制台

通过访问http://localhost:8080/jmx-console/,我们就能够浏览到服务器活动视图。通过它,我们能够修改,启动,停止JBoss组件

2.4停止服务

停止JBoss服务器,可以敲入Ctrl-C,或者从bin目录下运行shutdown脚本

 

JBoss的目录结构

bin                   启动和关闭JBoss的脚本

client                客户端与JBoss通信所需的的Java库(JARs
docs                  配置的样本文件(数据库配置等)

doc/dtd               JBoss中使用的各种XML文件的DTD
lib                   一些JARJBoss启动时加载,且被所有JBoss配置共享。(不要把你的库放在这里)
server                各种JBoss配置。每个配置必须放在不同的子目录。子目录的名字表示配置的名字。         JBoss包含3个默认的配置:minimialdefaultall
server/all              JBoss的完全配置,启动所有服务,包括集群和IIOP
server/default         JBoss的默认配置。在没有在JBoss命令航中指定配置名称时使用。
server/default/conf   JBoss的配置文件。
server/default/data    JBoss的数据库文件。比如,嵌入的数据库,或者JBossMQ
server/default/deploy  JBoss的热部署目录。放到这里的任何文件或目录会被JBoss自动部署EJBWAREAR,甚至服务。
server/default/lib    一些JARJBoss在启动特定配置时加载他们。 (allminimial配置也包含这个和下面两个目录。)
server/default/log    JBoss的日志文件。
server/default/tmp    JBoss的临时文件。

JBoss配置数据源

Jboss中的数据库连接管理完全由JBoss JCA实现处理,如果没有为数据库提供专有的适配器。则用户需要配置使用JBoss提供的包裹了JDBC的资源适配器,用户还必须提供JDBC驱动,并提供相应的类(将驱动jarzip文件拷贝到当前的工作的服务器配置中的lib目录)。

数据源配置文件的后缀为-ds.xml,因此JCA部署器能够正确处理它们,其中目录docs/examples/jca包含了用于各种数据库的配置实例。

4.1配置mysql数据源

1:mysql的驱动Connector/J拷贝到lib目录下

2:将docs/examples/jca下的mysql-ds.xml文件拷贝到server/default目录下

3:修改mysql-ds.xml

<local-tx-datasource>

    <jndi-name>jdbc/mydb</jndi-name> <!-- 数据源名称 -->

    <connection-url>jdbc:mysql://127.0.0.1:3306/mysql</connection-url> <!--连接URL-->

    <driver-class>com.mysql.jdbc.Driver</driver-class><!--数据库驱动-->

    <user-name>root</user-name><!--用户名-->

    <password>root</password><!--密码-->

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

    <metadata>

       <type-mapping>mySQL</type-mapping>

    </metadata>

  </local-tx-datasource>

 

JBoss控制台输出以下信心

09:36:54,578 INFO  [WrapperDataSourceService] Bound ConnectionManager 'jboss.jca:name=MySqlDS,service=DataSourceBinding' to JNDI name 'java:MySqlDS'则表示数据源部署成功

4:测试数据源:

新建一WEB工程编写如下java文件

package com.qianmo.test;

public class Test extends HttpServlet {

 

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        Connection conn;

        try {

            Context ctx = new InitialContext();

            Object datasourceRef = ctx.lookup("java:jdbc/mydb");

            DataSource dataSource = (DataSource)datasourceRef;

            conn = dataSource.getConnection();

            String sql = "select * from user";

            PreparedStatement pstmt = conn.prepareStatement(sql);

            ResultSet rs = pstmt.executeQuery();

            while(rs.next()){

                System.out.println(rs.getString(1));

            }

            conn.close();

        } catch (NamingException e) {

            e.printStackTrace();

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }

   

}

并配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

    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">

   

   

    <servlet>

        <servlet-name>testJboss</servlet-name>

        <servlet-class>com.qianmo.test.Test</servlet-class>

        <init-param>

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

          <param-value>3</param-value>

        </init-param>

        <init-param>

          <param-name>detail</param-name>

          <param-value>3</param-value>

        </init-param>

        <load-on-startup>0</load-on-startup>

    </servlet>

   

    <servlet-mapping>

        <servlet-name>testJboss</servlet-name>

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

    </servlet-mapping>

</web-app>

访问http://localhost:8080/testJboss/aa.do即可测试数据源

4.2配置oracle数据源

1:设置Pad

如果查看default/conf目录中的jboss-service.xml文件,将发现如下MBean服务

<!-- The configurable Xid factory.  For use with Oracle, set pad to true -->

   <mbean code="org.jboss.tm.XidFactory"

      name="jboss:service=XidFactory">

      <!--attribute name="Pad">true</attribute-->

   </mbean>

事务服务需要使用XidFactory MBean服务创建XA事务标识,其中的注释表明:如果使用Oracle数据库,则用户需要将属性Pad设置为true包括进来。这使得XA事务标识能够达到64位的最大长度。

2:将Oracle驱动程序拷贝到JBoss defaultlib目录下

3:将docs/examples/jca下的oracle-xa-ds.xml文件拷贝到server/default目录下,并做如下修改

<jndi-name>jdbc/mydb</jndi-name>

    <track-connection-by-tx/>

    <isSameRM-override-value>false</isSameRM-override-value>

    <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>

    <xa-datasource-property name="URL">jdbc:oracle:thin:@127.0.0.1:1521:orcl</xa-datasource-property>

    <xa-datasource-property name="User">scott</xa-datasource-property>

<xa-datasource-property name="Password">tiger</xa-datasource-property>

4测试数据源

  新建如下java文件

package com.qianmo.test;

 

import java.io.IOException;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

 

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.sql.DataSource;

 

public class TestOracle extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        Connection conn;

        try {

            Context ctx = new InitialContext();

            Object datasourceRef = ctx.lookup("java:jdbc/mydb");

            DataSource dataSource = (DataSource)datasourceRef;

            conn = dataSource.getConnection();

            String sql = "select * from dept";

            PreparedStatement pstmt = conn.prepareStatement(sql);

            ResultSet rs = pstmt.executeQuery();

            while(rs.next()){

                System.out.println(rs.getString(1));

            }

            conn.close();

        } catch (NamingException e) {

            e.printStackTrace();

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }

   

配置web.xml文件

<servlet>

        <servlet-name>testOracle</servlet-name>

        <servlet-class>com.qianmo.test.TestOracle</servlet-class>

    </servlet>

   

    <servlet-mapping>

        <servlet-name>testOracle</servlet-name>

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

    </servlet-mapping>

Spring使用数据源

<bean id="myDataSource"

  class="org.springframework.jndi.JndiObjectFactoryBean">

  <property name="jndiName">

  <value>java:jdbc/mydb</value>

  </property>

  </bean>

JBoss字符集设置

JBoss启动时默认使用的是系统字符集,而某些应用程序对于系统默认的字符集会出现不兼容的情况,如:打印出来的数据都是乱码。对于这种情况,可以在JBoss启动时定制应用程序使用自己的字符集。

 

设置字符集

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

         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"

         emptySessionPath="true"

         enableLookups="false" redirectPort="8443" acceptCount="100"

         connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="gb2312"/>

部署项目

将开发好的项目打成war文件拷贝到server/default目录下

控制台显示类似信息

15:29:59,390 INFO  [TomcatDeployer] deploy, ctxPath=/moveoa, warUrl=.../tmp/deploy/tmp20200moveoa-exp.war/

表示项目部署成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值