`
top00zw
  • 浏览: 15492 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

结合公司工程,总结glassfish学习的结果

阅读更多
本周,我通过网上查找资料,对glassfish_v2(后面简称glassfish)进行了一些研究,同时结合公司的ucall进行部署,现对研究的结果进行总结。
一 对glasssfish的理解
glassfish 是 sun 公司推出的一个符合java ee 5规范的免费、开源web应用服务器。它和Tomcat一样是优秀的Servlet容器,但是它具备延迟加载的功能,也就是说,GlassFish在启动时只会启动一些必需的核心服务项,因此在加载大型应用程序时,它的启动时间是比较少的,同时,它支持类的动态加载,因此它为程序在开发调试程序的时候提供了方便,不用为频繁重新启动服务器而烦恼。
二 Glassfish的简单操作
glassfish的操作主要分两种,一是控制台,另外的就是命令行终端。控制台控制,直接打开浏览器输入地址:http://localhost:4848/ 默认用户名:admin 密码:adminadmin ,登录之后在左边栏可以看到树形结构的各种操作。命令行的方式,首先要在%GLASSFISH_HOME%\bin 目录下,键入asadmin + 对应的各种操作。 
Glassfish的安装和配置,见最后“Glassfish 简单操作”。
三 Myeclipse与glassfish的集成
在myeclipse5.5及以上版本,glassfish_v2已经被集成,但是glassfish_v3没有被集成,这也是我用v2的原因。Myeclipse配置glassfish的步骤是:window-->Preferences-->MyEclipse-->Servers-->GlassFish2.x(注意,要Enable),主要填写的是Home Directory,比如我的就选择D:\glassfish之后就可以在MyEclipse里启动和关闭域了。
在myeclipse 中,插件只能简单的配合ide工作,因此,在myeclipse中只能进行服务的启动和停止,而且发布的工程也只是部署在独立的虚拟服务中,不能发布到集群中。另外,eclipse的运行环境的路径可能与命令行终端中不同,这就有可能会出现修改了glassfish的配置路径后,但是在myeclipse中不起作用的情形。
四 集群与负载均衡
集群分为水平集群和垂直集群两种,前者是在一台机器上配置多个实例,以一个代理为主,运行一个服务,后者是在多个机器上配置多个实例,一台机器作为代理,来运行一个服务。不管是哪中做法,首先需要配置一个代理节点nodeagent,指定host,然后在代理节点下创建实例。由于我只有一台机器,因此只实验了水平集群,在部署过程中,发现简单的测试程序能够成功部署,但是ucall的工程却怎么都部署不上去,且无任何错误提示,经过反复琢磨,发现是glassfish默认对上传的部署文件作了限制,发现问题后,经过网上查找资料,最后终于将ucall的工程成功发布集群。简单的操作见“Glassfish 简单操作”。
负载均衡,需要下载一个插件,然后配置到sun java system web server,也是经过很长时间的研究,却不能成功,后来再仔细研究sun公司发布的文档,发现我们用的glassfish是sun java system application server,但是负载均衡还要用到sun java system web server ,一个单词的区别,我把他当成了一个东西,结果按照文档操作,发现很多文件找不到。由于网络不太好,不能下载软件,负载均衡我没有实验,但是基本过程清楚。
五 需注意的事项
1. 路径问题,glassfish中程序读到的路径可能与tomcat,jetty中读到的路径不同,因此,很多在tomcat中能运行的程序,在glassfish中文件路径找不到。例如,Djava.library.path 在tomcat启动时,会将系统的path读入,但是glassfish不会,这样会造成动态的链接库文件只能放在glassfish找得到的地方,如%GLASSFISH_HOME%\lib。
2. 部署工程的问题,以文件夹方式部署web application 只能部署单独实例的虚拟机工程。部署集群的时候需要war包上传,但是上传war文件,要注意文件的大小,默认的为100m,如果超过此大小部署会不成功,且无任何提示。 更改上传文件限制配置的方式是:
%GLASSFISH_HOME%\lib\install\applications\admingui\adminGUI_war\WEB-INF\web.xml

<filter-name>UploadFilter</filter-name>
<filter-class>com.sun.webui.jsf.util.UploadFilter</filter-class>
<init-param>
<param-name>maxSize</param-name>
<param-value>[limit_upload_size]</param-value>
</init-param>

3. 启动实例的前提是要nodeagent是运行的,且只能在命令行启动
启动命令是,adadmin nodeagent-start nodeagentname
4. ucall两处源代码需要做修改。一是,base.flag.web800.util.PathManager 中的getPath()方法,在glassfish中读web800log4j.property文件总是读成%GLASSFISH_HOME%的主目录,结果总是找不到文件,其次是qflag_billing.jar中 的qflag.jdbc.DBProperty,同样的在读取取db.propery文件时候找不到路径。
六 遗留问题
1. 负载均衡,由于没有多台机器和软件,无法实验
2. 高可用性,前置条件是负载均衡的成功运行,目前不能实验
分享到:
评论
2 楼 caspers 2009-03-31  
你好 我今天刚接触到glassfish,挺兴奋的,但是同时也有一个怎样都解决不了的问题,使用myeclipse7.0 milestone 启动GF, 发现console里面输出异常,
recursive call into SystemOutandErrhandler
java.lang.RuntimeException: recursivecall
然后就什么都没有了,服务器的确是启动了,访问我的应用都正常而且速度很快,但是控制台什么都不输出,程序里面的System.out.print...也都不输出,最后发现所有内容都输出到log文件中去了,诚心请教应该怎样让他输出到控制台呢?否则开发起来很不方便喔

非常感谢!

kevinseashine@gmail.com
1 楼 judytang 2008-12-23  

你好 !  认真读了,写的非常好,希望能跟GlassFish团队多交流,这是联系的方法,谢谢 !

Judy


http://blogs.sun.com/theaquarium_zh/entry/%E5%A6%82%E4%BD%95%E8%B7%9Fglassfish_%E7%A4%BE%E5%8C%BA%E8%81%94%E7%B3%BB%E6%9D%A5%E6%8F%90%E9%97%AE%E4%BD%A0%E7%9A%84%E9%97%AE%E9%A2%98

相关推荐

Global site tag (gtag.js) - Google Analytics