GlassFishv2.x初探及ejb3测试

来源:互联网 发布:怎么在mac上玩dota2 编辑:程序博客网 时间:2024/05/22 13:05

首先,下载并安装Glassfishv2(安装完后查看version是Sun Java System Application Server 9.1 (build b41d-beta2)),这个都很容易找到相关资料。下面就个人在安装及测试时遇到的一些问题做一下总结。

 

1、安装时都采用默认设置,我下的是glassfishv2.jar安装文件,看网上资料有提到在进行到ant执行setup.xml文件时会遇到一点小麻烦,看完别人的解决步骤后就写了一个bat文件来执行安装,其实很简单:

java -Xmx256m -jar glassfishv2.jar  //此处解压到同目录下的glassfish文件夹

cd glassfish

lib/ant/bin/ant -file setup.xml //执行setup安装

 

2、关于glassfish的启动及关闭,网上也有文章,大致有3种做法。

a. 使用%GLASSFISH_HOME%/bin目录下的asadmin.

b. 使用%GLASSFISH_HOME%/domains/domain1/bin目录下的startserv及stopserv,注意需要将%GLASSFISH_HOME%/bin添加到path环境变量中,但此处还是稍微有点问题。启动时还好,就是需要输入用户名、密码,默认如下:

admin username = admin

admin password = adminadmin

master password = changeit //这个不好找,不知道干嘛用的

使用stopserv关闭时会出现问题,命令结束后实际并没有让glassfish服务停止。

“Could not create the Java virtual machine.
Unrecognized VM option '+LogVMOutput'”

继续在网上搜索,找到需要将%GLASSFISH_HOME%/lib/processLauncher.xml文件中的如下段注释掉。

        <sysproperty key="-XX:+UnlockDiagnosticVMOptions"/>
        <sysproperty key="-XX:+LogVMOutput"/>
        <sysproperty key="-XX:LogFile" value="${com.sun.aas.instanceRoot}/logs/jvm.log"/>

c. 在MyEclispe中添加server,然后...(感觉这个方法最方便好用)

 

安装算基本完成,接下来打开MyEclipse,照着Help Contents中的MyEclipse Learn Center -> EJB Development -> EJB3.0 Tutorial来进行EJB3测试。其中需要注意的总结如下几点:

 

1、 在完成代码编写时,不能直接通过Add deployment to server的方式直接将EJB项目部署到Glassfish中,这样是没用的,根本无法访问到EJB(服务器启动时一堆异常)。其实,在代码完成后,可以访问Glassfish的管理页面http://localhost:4848/,在管理页面通过添加EJB Module的方式就可以将EJB部署到服务器上;可以部署打包的jar文件,也可以直接将你项目的class目录部署到Glassfish中(测试时为了方便,直接采用的第二种方法)。部署完成后,会将相应的保存到%GLASSFISH_HOME%/domains/domain1/config/domain.xml中。

 

<ejb-module availability-enabled="false" directory-deployed="true" enabled="true" location="e:/myworkspace/SampleEJB/classes" name="Myejb" object-type="user">
      <description>test</description>
    </ejb-module>

 

部署完成后,就可以大胆的运行MyBeanClient了,一切正常,“Hello World“在控制台出来了。

 

2、当我使用其它两种方法启动Glassfish时,“Hello World”却始终不肯露面,运行后无异常也无输出,起初以为又出错了,但想想如果真有异常也应该输出一堆异常啊,可偏偏什么也没有(cmd窗口亦没有,不像Tomcat)。于是想到%GLASSFISH_HOME%/domains/domain1/logs目录,希望这里有,果然在server.log有预期的输出。