jboss安装及注册windows服务项及JNDI配置

之前项目使用Jboss作为应用服务器,现在重新总结或补充相关的知识。


Jboss4 安装及配置(具体版本Jboss-4.2.3.GA

下载Jboss-4.2.3.GA并解压到电脑的某个目录里中(假设解压到 D:\server下面),可以看一下jboss服务器安装目录有那些内容

启动jboss服务器:找到 bin 目录中的 run.bat 文件,双击将以windows命令行的方式启动jboss服务器

该文件的完整路径为: D:\server\jboss-4.2.3.GA\bin\run.bat

 

1、安装jdk,设置JAVA环境变量: JAVA_HOME,PATH 等内容。

配置安装jdk请看这篇:JAVA环境变量设置

 

2、配置jboss环境:添加JBOSS_HOME 环境变量(系统变量)。

JBOSS_HOME为JBoss安装目录,例如:D:\server\Jboss-4.2.3.GA

 

3、注册windows服务器项

如果不需要安装windows服务器项(一般用作开发环境配置操作或者启动windows命令行方式操作),可以忽略此项及后面的操作步骤。

如果在本地开发环境的话,可以不需要注册到服务服务项,因为要调试测试程序要经常关闭启动jboss服务器(一般都是添加到开发工具中进行启动调试程序等)

一般用于测试或生产服务器,一般会将jboss服务器安装到windows服务项来启动与关闭,而不是启动命令行的方式运行jboss服务器(命令行方式启动弊端:窗口不小心关闭了即意味着服务器被关闭,电脑重启后需要重新运行run.bat文件启动)

操作步骤如下:

  • 在jboss4配置windows服务项,需要下载JavaService-2.0.10.zip,解压缩,把其下的JavaService.exe拷贝到

       D:\server\Jboss-4.2.3.GA\bin

  • 用命令行工具,切换到D:\server\Jboss-4.2.3.GA\bin目录,输入下面内容

JavaService.exe -install JBoss %JAVA_HOME%\jre\bin\server\jvm.dll -Djava.class.path="%JBOSS_HOME%\bin\run.jar;%JAVA_HOME%\lib\tools.jar" -Xms512M -Xmx1024M -start org.jboss.Main -stop org.jboss.Main -method systemExit -out "%JBOSS_HOME%\server\default\log\stdout.log" -err "%JBOSS_HOME%\server\default\log\stderr.log" -current "%JBOSS_HOME%\bin" -overwrite -startup 6




4、启动、停止jboss服务器

jboss注册windows服务项成功后,可以使用以下两种方式进行启动与停止jboss服务器了:

  • 通过命令行的方式启动与停止:通过输入“net start JBoss”、“net stop JBoss” 可以进行服务的启动和停止。
  • 找到到控制面板  》管理工具  》服务:通过windows注册服务项列表中找到服务器名称为 ”JBOSS“ 的服务,鼠标右键可以执行启动和停止等操作。

下图是windows命令行方式启动停止 jboss 服务器

 

5、卸载jboss在windows中注册的服务项

用命令行工具,切换到D:\server\Jboss-4.2.3.GA\bin目录,输入下面内容

JavaService.exe -uninstall JBoss

可以看到,提示服务被卸载。

 

Jboss5 安装及配置(具体版本Jboss-5.0.0.GA)

下载Jboss-5.0.0.GA、安装配置jdk步骤略,从安装目录中可以 看到jboss5.0.0已经自带windows服务项注册程序

Jboss-5.0.0.GA安装(注册)卸载(删除)Windows服务项:

1、安装(注册)windows服务项:

打开windows命令行, 切换到 D:\server\Jboss-5.0.0.GA\bin目录,输入:service.bat install

系统会提示:Service JBoss Application Server 5.0 installed,表示JBoss5.0的服务注册成功。

2、卸载(删除)Windows服务项:

打开windows命令行, 切换到 D:\server\Jboss-5.0.0.GA\bin目录,输入:service.bat uninstall

系统会提示:Service JBoss Application Server 5.0 removed。

3、启动、停止jboss服务器

此操作和 Jboss4 安装及配置(具体版本Jboss-4.2.3.GA)的 第 4 项操作相同

 


jboss服务器的JNDI配置

项目cros :   

环境:            

 jboss-4.2.3.GA
                spring2.5.6
        去jboss官方下载jboss服务器,http://www.jboss.org/jbossas/downloads/。建议下载jboss-4.2.3.GA这个版本的jboss,个人感觉还是这个版本的jboss比较稳定
        解压下载下来的jboss压缩文件,笔者解压到D:\jboss-4.2.3.GA
        笔者以oracle数据库来说明如何在jboss下配置jndi 以及整合spring
        拷贝oracle-ds文件
        去D:\jboss-4.2.3.GA\docs\examples\jca目录下拷贝oracle-ds文件到D:\jboss-4.2.3.GA\server\default\deploy目录下改名即可
        大致内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
    <jndi-name>KBSDS</jndi-name>
    <connection-url>jdbc:oracle:thin:@192.168.4.243:1521:future</connection-url>
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <use-java-context>false</use-java-context>
    <user-name>knowledge</user-name>
    <password>knowledge</password>
    <min-pool-size>5</min-pool-size>
    <max-pool-size>20</max-pool-size>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
      <metadata>
         <type-mapping>Oracle9i</type-mapping>
      </metadata>
  </local-tx-datasource>
</datasources>

jndi-name:不用多说了,当然是为该jndi取一名称这里使用KBSDS
其他几个属性不做过多解释
use-java-context:属性默认为true,如未配置该属性或该属性配置为true,那么jboss在启动的时候jndi的名称前会加上java:   这里我们jndi的名称为KBSDS,那么未配置该属性或该属性为true的话,你在spring中使用jndi时指定的jndiName就应该为java:KBSDS,若配置为false,那么jboss服务器不会为你加上java: 你在spring中jndiName应当配置为KBSDS,即与jndi-name属性值等同。这里为了方便期间设置该属性为false
        拷贝oracle驱动
        拷贝oracle驱动 class12.jar到jboss的如下目录
        D:\jboss-4.2.3.GA\lib
        D:\jboss-4.2.3.GA\server\default\lib
        切记数据库驱动拷贝到D:\jboss-4.2.3.GA\server\default\lib目录下,否则即使你jndi配置的再怎么正确都会报如下错误,该错误在jboss启动的时候并不会报出,只有在正式遇数据库进行交互的时候才会报此错误,大概错误是这样的。此处花了好长时间才解决。

org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is org.jboss.util.NestedSQLException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Apparently wrong driver class specified for URL: class: oracle.jdbc.driver.OracleDriver, url: jdbc:oracle:thin:@192.168.4.243:1521:future); - nested throwable: (org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Apparently wrong driver class specified for URL: class: oracle.jdbc.driver.OracleDriver, url: jdbc:oracle:thin:@192.168.4.243:1521:future))
    org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:238)
    org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:374)
    org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:263)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    $Proxy67.managerLogin(Unknown Source)
    com.future.knowledges.action.ManagerAction.execute(ManagerAction.java:62)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 

  配置spring配置文件:

在applicationContext.xml中配置如下信息:

<bean name="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
        <property name="jndiName">
            <value>KBSDS</value>
        </property>
    </bean>

此种方式指定jndiName为KBSDS并未java:前缀,需要你手动在jboss的jndi配置文件中设置use-java-context属性为fasle,若未设置该属性或设置为true那么此处应该是这样子的

<bean name="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
        <property name="jndiName">
            <value>java:KBSDS</value>
        </property>
    </bean>

需要你手动加上java:前缀后面跟jboss下配置的jndi的名称
其实这里的配置主要是根据jboss服务器启动时控制台给出的信息来配置的
设置use-java-context为false时控制台给出的jndi信息

11:13:34,250 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA' to JNDI name 'java:JmsXA'
11:13:34,359 INFO  [WrapperDataSourceService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=KBSDS' to JNDI name 'KBSDS'
11:13:34,406 INFO  [TomcatDeployer] deploy, ctxPath=/KBS, warUrl=/deploy/KBS.war/
11:13:34,781 INFO  [[/KBS]] Initializing Spring root WebApplicationContext
设置use-java-context为true或不设置时控制台给出的jndi信息
11:25:15,921 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA' to JNDI name 'java:JmsXA'
11:25:15,984 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=KBSDS' to JNDI name 'java:KBSDS'
11:25:16,031 INFO  [TomcatDeployer] deploy, ctxPath=/KBS, warUrl=/deploy/KBS.war/
注意对比两次控制台分别打印的信息,从中很容易发现,其实就是use-java-context属性的作用。关于该属性,大家可以去参看jboss的官方文档。这里就不细说了。
到此jboss下配置jndi 以及整合spring已经成功配置起来了,接下来就是一些细化了,大家可以去查询jboss的关于jndi配置的文档。
其实在jboss下配置jndi远远比在tomcat下配置jndi简单的多。
总结下来就这几步
拷贝jndi模板到server\default\deploy目录下,并做修改,这里面模板文件均是以数据库类型-ds.xml命名的。
拷贝数据库驱动到\server\default\lib目录和jboss安装目录\lib下即可。

原文链接:https://blog.youkuaiyun.com/henry_yqh/article/details/8365434

下面给大家看一下jboss服务器中提供常用的数据的JNDI模板文件

SQL Server数据库:mssql-ds.xml

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

<!-- ===================================================================== -->
<!--                                                                       -->
<!--  JBoss Server Configuration                                           -->
<!--                                                                       -->
<!-- ===================================================================== -->

<!-- $Id: mssql-ds.xml 71535 2008-04-01 07:05:03Z adrian@jboss.org $ -->

  <!-- ======================================================================-->
  <!-- New ConnectionManager setup for Microsoft SQL Server 2005  driver     -->
  <!-- Further information about the Microsoft JDBC Driver version 1.1      -->
  <!-- can be found here:                                                   -->
  <!-- http://msdn2.microsoft.com/en-us/library/aa496082.aspx               -->  
  <!-- ===================================================================== -->

<datasources>
  <local-tx-datasource>
    <jndi-name>MSSQLDS</jndi-name>
    <connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyDatabase</connection-url>
    <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
    <user-name>x</user-name>
    <password>y</password>
        <!-- sql to call when connection is created
        <new-connection-sql>some arbitrary sql</new-connection-sql>
        -->

        <!-- sql to call on an existing pooled connection when it is obtained from pool 
        <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
        -->

      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
      <metadata>
         <type-mapping>MS SQLSERVER2000</type-mapping>
      </metadata>
  </local-tx-datasource>

</datasources>

mysql数据库:mysql-ds.xml

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

<!-- $Id: mysql-ds.xml 71535 2008-04-01 07:05:03Z adrian@jboss.org $ -->
<!--  Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->

<datasources>
  <local-tx-datasource>
    <jndi-name>MySqlDS</jndi-name>
    <connection-url>jdbc:mysql://mysql-hostname:3306/jbossdb</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>x</user-name>
    <password>y</password>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
    <!-- should only be used on drivers after 3.22.1 with "ping" support
    <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
    -->
    <!-- sql to call when connection is created
    <new-connection-sql>some arbitrary sql</new-connection-sql>
      -->
    <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers
    <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
      -->

    <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>

oracle数据库: oracle-ds.xml

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

<!-- ===================================================================== -->
<!--                                                                       -->
<!--  JBoss Server Configuration                                           -->
<!--                                                                       -->
<!-- ===================================================================== -->

<!-- $Id: oracle-ds.xml 71535 2008-04-01 07:05:03Z adrian@jboss.org $ -->
<!-- ==================================================================== -->
<!--  Datasource config for Oracle originally from Steven Coy             -->
<!-- ==================================================================== -->


<datasources>
  <local-tx-datasource>
    <jndi-name>OracleDS</jndi-name>
    <connection-url>jdbc:oracle:thin:@youroraclehost:1521:yoursid</connection-url>
	<!--

		Here are a couple of the possible OCI configurations.
		For more information, see http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/java.920/a96654/toc.htm

	<connection-url>jdbc:oracle:oci:@youroracle-tns-name</connection-url>
		or
	<connection-url>jdbc:oracle:oci:@(description=(address=(host=youroraclehost)(protocol=tcp)(port=1521))(connect_data=(SERVICE_NAME=yourservicename)))</connection-url>

		Clearly, its better to have TNS set up properly.
	 -->
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <user-name>x</user-name>
    <password>y</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>
        -->

        <!-- sql to call on an existing pooled connection when it is obtained from pool - the OracleValidConnectionChecker is prefered
        <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
        -->

      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
      <metadata>
         <type-mapping>Oracle9i</type-mapping>
      </metadata>
  </local-tx-datasource>

</datasources>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值