这几天在做web工程的迁移,从jboss 5迁移到jboss 6.3.

在做迁移的过程中遇到了一些问题,在这里记录一下。

首先来看一下jboss5和jboss6.3的区别:

        

上面两幅目录截屏左边的是jboss5.1的,右边的是jboss6.3的,别的不多说,仅从目录便可以看出,jboss6.3使用的是模块化加载jar包的方式,并且也包含了jboss之后版本的domain和standalone两种启动方式。所以说jboss5和jboss6.3从结构上来讲其差别就是比较大的。此外,jboss6.3的配置是standalone.xml文件,避免了jboss5中混乱的配置结构。

接下来讲一下我在迁移的过程中遇到的一些问题,由于涉及到项目的保密性,所以代码部分会有所省略。

在该项目中,使用JDK1.6.

1、启动问题

在拿到jboss6.3的zip包后,第一件事便是解压,配置环境变量然后运行了,我这里使用的是standalone的启动方式,单击standalone.bat文件便可。

但是单击后出现下图所示:

     

注:-Xms:初始Heap大小,使用的最小内存 -Xmx:java heap最大值,使用的最大内存

从log中可以看出,使用的内存不够,无法创建虚拟机。

原因:jboss的版本是64位的,而我的工作环境的jdk1.6是32位的,其导致的直接结果便是无法调节内存

解决:将32位的jdk换成64位的(环境限定无法更改)

        将内存jboss启动时的内存调小(在log中显示其使用的最大和最小内存)

我使用的是第二种方法,在standalone.bat文件的附近还有一个standalone.conf.bat文件,使用记事本打开该文件,找到下图位置:

    

改变其Xms和Xmx的大小便可,我使用的是512.改完后启动成功。

  2、数据源的配置

在jboss5中,配置数据源的方式比较简单,在segment(如server下的default节点)下的lib文件夹中加入数据库驱动jar,然后在segment的deploy文件夹中添加name-ds.xml文件,jboss便可以自动配置数据源。

     而jboss6.3中,进行了模块化设计,所以与jboss的配置有所不同,配置方式可参考wildfly8+jpa EntityBean 简单入门

     在配置的过程中,原本jboss5中的-ds.xml文件中的数据源为datasource1.我一开始使用的方式为全部照抄。结果出现异常:

at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_26]
Caused by: javax.xml.stream.XMLStreamException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[150,5]
Message: "JBAS010471: Jndi name have to start with java:/ or java:jboss/"

     即所有的jndi都要以java:/或java:jboss/开头

     这也意味着,你的工程中的所有的数据源都将失效(┬_┬)

####注:仔细看了jboss5后,发现jboss5是可以通过jboss:datasourceName的形式访问的

3、工程中的包和jboss中的包冲突

在迁移的过程中了解到了本项目原本是用weblogic中迁移到jboss5的,现在准备迁移到jboss6.3中,在jboss5的时候需要额外的jar:weblogic

由于使用的是模块化,所以要在jboss的moudle中按规则加入jar包,然后在standalone.xml文件中配置,如下所示:

    <subsystem xmlns="urn:jboss:domain:ee:1.1">
<global-modules>
<module name="XXX.weblogic" slot="main"/>
</global-modules>
<spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>
<jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement>
<annotation-property-replacement>false</annotation-property-replacement>
</subsystem>

    如果要在加jar包,则可以在global-modules节点中添加。

      以上步骤看似正确,实则给自己挖了一个大坑。运行后log中有如下提示:  

14:27:49,754 INFO  [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/home]] (ServerService Thread Pool -- 58) JBWEB000264: Marking servlet DownloadServlet as unavailable
14:27:49,754 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/home]] (ServerService Thread Pool -- 58) JBWEB000289: Servlet DownloadServlet threw load() exception: java.lang.ClassCastException: XXX.XXX.XXX.core.servlet.DownloadServlet cannot be cast to javax.servlet.Servlet
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1154) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1100) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]

     百度的结果为:这个异常很常见,应该是你导入的jsp的jar包和servlet的jar包重复导致的冲突

     表示走入死胡同,所有的都检查了,就是没有想到我之前导入的weblogic包。。。最后在大神的帮助下,找到了这个问题,分分钟解决

 

 4、配置文件问题

   原本在jboss5中,除了部署工程之外,还需要在jboss下segment中的conf文件夹中添加一份配置文件:conf.properties

而在jboss6中,segment中只有configuration文件夹,没有conf文件夹,所以我暂时将文件放在了configuration中。

     启动jboss6后,出现异常:

07:01:24,966 ERROR [WebAppListener] (ServerService Thread Pool -- 52) E/2016.03.28 at 07:01:24|java.io.FileNotFoundException: null\conf\config.properties (The system cannot find the path specified): xx.xx.xx.xx.ConfigurationException: java.io.FileNotFoundException: null\conf\config.properties (The system cannot find the path specified)

这段log,是由程序中的logging打印出来的,从这段log中可以看出是找不到配置文件,并且其中的地址还很神奇的出现了一个null,我首先尝试将配置文件放到我自己创建的在standalone中的一个conf文件夹中,但还是会报这个错误,所以看代码(简写):

final String serviceInstance = System.getProperty("jboss.server.home.dir") + “/conf/conf.properties";

在log中的null就是应为 System.getProperty("jboss.server.home.dir") 导致,百度之后,发现"jboss.server.home.dir"JBOSS自带环境变量,其表示的方式为:  jboss.server.home.dir:D:\Tools2\EclipsePlugin\JBoss\jboss-5.1.0.GA\server\segment

解决方法为:在standalone.xml中,添加定义,我这里使用的是一种比较简单的方式:

    首先命令行cd到standalone.bat目录,然后输入:

standalone.bat -Djboss.server.home.dir=D:\Tools2\EclipsePlugin\JBoss\jboss-eap-6.3\standalone

这样一来,在jboss启动的时候便设置好了变量,那么程序中就可以获取到变量的值了。

  5、数据库驱动问题

在上文中已经添加好了数据库连接池,但是在启动的时候,会出现一个异常:

09:55:06,936 INFO  [] (ServerService Thread Pool -- 54) O/2016.03.28 at 09:55:06|    ..[0]
| JdbcConf.setConnProperties fukey_DbPool=java:jboss/datasources/dbpool connProperties=[{fukey_DbPool=java:jboss/datasources/dbpool}]
09:55:06,936 ERROR [stderr] (ServerService Thread Pool -- 54) javax.naming.NameNotFoundException: Error looking up jboss/datasources/dbpool, service service jboss.naming.context.java.jboss.datasources.dbpool is not started
.......
service jboss.jdbc-driver.jtds (missing) dependents: [service jboss.data-source.java:jboss/datasources/dbpool, service jboss.driver-demander.java:jboss/datasources/dbpool1, service jboss.driver-demander.java:jboss/datasources/dbpool2, service jboss.driver-demander.java:jboss/datasources/dbpool3, JBAS014799: ... and 17 more ]

    这里的log分为两部分,上一部分描述的是在启动国过程中调用jndi时发现,数据源没有启动;下一部分讲的是没有找到驱动包。

在该工程中,使用的数据库驱动是jtds包,连接的是sqlserver,数据源的配置我是按照文档中的示例改写的,所以一直以为是对的,下面是在standalone.xml中添加的驱动:

<drivers>
  <driver nam e="h2" module="com.h2database.h2">
    <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
  </driver>
  <driver nam e="jtds" module="net.sourceforge">
    <xa-datasource-class>net.sourceforge.jtds.jdbc.Driver</xa-datasource-class>
  </driver>
</drivers>

上面的就是,没有改过的,第一个驱动是jboss自带的h2,第二个是我自己写的jtds,由于我之前做过jboss8配置mysql的数据源,也是使用驱动做的配置,并且连接是成功的,所以下意识的认为这也是可以的,后来在一篇国外的博客中发现,在驱动的配置中,除了<xa-datasource-class>这个标签之外,还有<driver-class>标签,专门用于Driver类型的一个标签,这个标签我也查了一下jboss6的开发文档,有写,但只是在一个表格中提了一下,没有示例容易忽略

将其改为:

<drivers>
  <driver nam e="h2" module="com.h2database.h2">
    <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
  </driver>
  <driver nam e="jtds" module="net.sourceforge">
    <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
  </driver>
</drivers>

便可以连接成功。

***未解决:如何将4中的变量复制写入standalone.bat文件或是run.bat

  以上就是我在做迁移的时候遇到的几个比较深刻的问题。

由于要配置jboss6.3,这里给一个jboss6的技术文档

web工程迁移---jboss5迁移到jboss6的更多相关文章

  1. web工程迁移---weblogic8迁移到jboss5遇到的异常

    原有的web工程是在weblogic8上运行的,但现在的要求是要运行到jboss5中,为如后迁移到更高版本的jboss做准备 由于我对weblogic没有过研究,所以之前的步骤都是有别人进行的,在进行 ...

  2. 将Web站点由IIS6迁移至IIS7

    最近开始着手逐步将所有的Web站点由Win2003+IIS6迁移至64位Win2008+IIS7,基本还算顺利.这里就把相关内容整理总结一下.首先自然是要安装基本运行环境,包括iis,.net fra ...

  3. 将集群WEB节点静态数据迁移到共享存储器(LNMP环境)

    系统版本:Centos 6.5 机器及IP规划如下: 192.168.0.117  MySQL 192.168.0.118  nginx+php 192.168.0.123  nfs ①在NFS机器上 ...

  4. 词频统计Web工程

    本次将原本控制台工程迁移到了web工程上.. 需求: 1.把程序迁移到web平台,通过用户上传TXT的方式接收文件: 2.在页面上给出链接 (如果有封皮.作者.字数.页数等信息更佳)或表格,展示经典英 ...

  5. Saiku数据库迁移H2迁移到Mysql(二十二)

    Saiku数据库迁移H2迁移到Mysql Saiku默认使用H2数据库来存储saiku的用户与角色信息,我们可以根据角色来做saiku的权限控制,然后将角色分配给用户 ,该用户就会有对应的约束了! 由 ...

  6. 使用Eclipse创建Maven Web工程

    方法/步骤 1 使用Eclipse创建Maven Web工程 2 找到Maven Project,点击Next 3 勾选上Create a simple project (不使用骨架),Next 4 ...

  7. web工程常用路径的获取方法

    此文章是基于 搭建SpringMVC+Spring+Hibernate平台 一. 利用 Spring 取得web工程根路径 1. web.xml 中添加如下: <context-param> ...

  8. 项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程

    之前的几个小节,都是纯手工建文件夹,纯手工拷贝war包,或者纯手工解压个zip看看结果,,,,这还是我写了玩的helloWorld.若是玩大工程.几十个人的团队协同开发时,这么玩,,,,暴躁的程序员估 ...

  9. 在Web工程中引入Jquery插件报错解决方案

    在学习Jquery插件的时候,遇到一个问题就是新建web工程后在WebRoot下引入Jquery插件的时候报错,不知道为什么好纠结,但是项目能正常运行,后来找到解决方案,在这里给大家分享一下. 解决方 ...

随机推荐

  1. python中的分号

    很多编程语言是以分号作为一行代码的的结束标志,但是在Python中不是这样的,而是靠缩进来识别程序结构. Python中一行代码以分号结束,并不是必须的,准确来说是不被推荐的,因为加上分号就是画蛇添足 ...

  2. php实现网站四则运算。

    1.设计思路: 在index.php中建立两个表单,有两个提交,一个跳转到fourArithmeticOperation.php,这里保存用户输入的参数到config.txt中,留给main函数调出. ...

  3. c# json转换成dynamic对象,然后在dynamic对象中动态获取指定字符串列表中的值

    using Newtonsoft.Json;using System;using System.Collections.Generic;using System.Linq;using System.T ...

  4. toast js

    参考别人的,自己改写了下,很好用. <!DOCTYPE html> <html lang="zh-CN"> <head> <meta ch ...

  5. Spring中注入bean学习的总结

    1.在类上直接加注解@Component,那么这个类就直接注入到Spring容器中了  ,像@Contrloller,@Service这些本质上都是@Component, 2.@Configurati ...

  6. Objective-C与Swift混编

    1,创建项目(比如你先选择Objective-C) 2,项目创建成功后接着创建一个swift类  3,Xcode会弹出提示框问你需不需要创建桥接文件(桥接文件的名称默认为:项目名称-Bridging- ...

  7. Cerebro_变量名搜索插件

    Cerebro 安装 兼容环境:Windows, MacOS, Linux 插件依赖于 Cerebro,下载地址: https://github.com/KELiON/cerebro/releases ...

  8. apollo broker 启动流程

    1.下载Apollo服务器,下载后解压,然后运行apache-apollo-1.6\bin\apollo.cmd,输入create mybroker(名字任意取,这里是根据官网介绍的来取的)创建服务器 ...

  9. WPF 使用 Direct2D1 画图 绘制基本图形

    本文来告诉大家如何在 Direct2D1 绘制基本图形,包括线段.矩形.椭圆 本文是一个系列 WPF 使用 Direct2D1 画图入门 WPF 使用 Direct2D1 画图 绘制基本图形 本文的组 ...

  10. .NET MVC 学习笔记(五)— Data Validation

    .NET MVC 学习笔记(五)—— Data Validation 在实际应用中,我们需要对数据进行增查改删业务,在添加和修改过程中,无论你编写什么样的网页程序,都需要对用户的数据进行验证,以确数据 ...