jboss服务器怎样部署项目,JBoss低版本项目热部署到JBoss7

  • Post author:
  • Post category:其他


2.3    JNDI

2.3.1 JNDI命名规则

jboss7使用了更为严格的JNDI命名规则,其基本规则如下:

(1)相对命名如“ExampleDS”或“jdbc/ExampleDS”应该修改为相对于具体环境,如“java:comp/env”,“java:jboss/env”,“java:module/env”等。

(2)绝对命名如“/jdbc/ExampleDS”应该修改为相对命名如“java:jboss/root”。

(3)如“java:/jdbc/ExampleDS”的绝对命名也应如(2)修改。

(4)“java:jboss”命名在整个jboss服务器中时共享的。

(5)任何以“java:”开头的命名必须结合“comp”,“module”,“app”,“global”,“jboss”中的一个,否则会报错。

2.3.2 Local JNDI

name

scope

properties

java:comp

current component

standard namespaces

java:module

current module

java:app

current application

java:global

application server

java:jboss

global

jboss7 提供的全局命名

java:/

global

java:jboss/exported

global

如在HelloWorldEar包中有HelloWorldEJB,在HelloWorldEJB中有HelloWorld bean实现了HelloWorldRemote接口,则部署时HelloWorld绑定的JNDI为以下几个:

java:global/HelloWorldEar/HelloWorldEJB/HelloWorld!com.ejb.HelloWorldRemote

java:app/HelloWorldEJB/HelloWorld!com.ejb.HelloWorldRemote

java:module/HelloWorld!com.ejb.HelloWorldRemote

java:jboss/exported/HelloWorldEar/HelloWorldEJB/HelloWorld!com.ejb.HelloWorldRemote

java:global/HelloWorldEar/HelloWorldEJB/HelloWorld

java:app/HelloWorldEJB/HelloWorld

java:module/HelloWorld

2.3.3 remote JNDI

在jboss5中默认ejb的JNDI名称为:

本地接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local

远程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote

如果ejb只是在单独的jar包中,则不需要EAR-FILE-BASE-NAME。而在jboss7中remote ejb的JNDI命名规则如下:

ejb:///!,如果是有状态bean,则还需加上?stateful。

其中app-name指的是ear包的名称

module-name指的是其所在的jar包的名称

distinct-name指的是起的别名

bean-name指的是该bean的名字

fully-qualified-classname-of-the-remote-interface指的是其实现的接口的名字,要加上完整的包名。

2.3.4 绑定全局JNDI

直接修改standalone.xml或者domain.xml文件,格式如下所示:

3.        可能会遇到的问题

3.1ejb JNDI

由于jboss7与jboss5JNDI命名方式的差别很大,若在原有项目中大量使用了JNDI,则在迁移时要进行更改或绑定,将是一项庞大的工程。

3.2 配置文件无法解析

在添加数据源或其他需要修改standalone.xml或domain.xml配置文件后,重新启动服务器会报无法解析配置文件的错误,可以通过jboss-home/bin/jboss-cli.bat来修该配置文件。以下为添加一个数据源的格式:

[standalone@localhost:9999 /] /subsystem=datasources:installed-drivers-list

{

“outcome” => “success”,

“result” => [{

“driver-name” => “h2”,

“deployment-name” => undefined,

“driver-module-name” => “com.h2database.h2”,

“module-slot” => “main”,

“driver-xa-datasource-class-name” => “org.h2.jdbcx.JdbcDataSource”,

“driver-class-name” => “org.h2.Driver”,

“driver-major-version” => 1,

“driver-minor-version” => 2,

“jdbc-compliant” => true

}]

3.3 ClassNotFoundException  ClassCastException

出现上述问题则是模块之间缺少依赖关系,导致找不到相应的类。

总结

在把项目从jboss5迁移到jboss7上时,上述3个步骤能解决大部分的问题

0b1331709591d260c1c78e86d0c51c18.png