本周,我通过网上查找资料,对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. 高可用性,前置条件是负载均衡的成功运行,目前不能实验
一 对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. 高可用性,前置条件是负载均衡的成功运行,目前不能实验