前一阵因对Tomcat的发展前景比较担心(版本升级慢,目前还未支持基于NIO的Comet技术),所以想考虑更换一下服务器,就尝试一下把项目移到Glassfish V2版本上,但中间遇到了不少问题,今天总结了一下,也希望高手能给一些点评。
下面列举了一下遇到的问题以及解决的办法:
1. JNDI设置
Tomcat的JNDI的设置,可以通过Context.xml或是server.xml文件中配置,配置的方法如下:
<Environment name="xxxx" type="java.lang.String" value="xxx" />
获取的方法为: java:comp/env/xxxx
Glassfish则与tomcat大不相同。Glassfish识别context.xml文件,但不识别<Environment>标签,那么
要在Glassfish上配置JNDI需要通过管理界面的资源或是domains/domainname/config/domain.xml中配置
下面是一个示例:
<custom-resource enabled="true" factory-class="com.manorrock.glassfish.jndi.JndiStringFactory" jndi-name="xxxxx" object-type="user" res-type="java.lang.String">
<property name="cccc" value="xxxxx"/>
</custom-resource>
取得的方法: xxxxx(不能加上java:comp/env/),包括取数据源也是一样,这个很容易出错,一定要注意。
2. Realm的设置
Tomcat和Glassfish都支持Realm,但可惜Realm不是Servlet规范,当然各家产出的东西也是不一样的了。
如果你使用的是自定义的Realm扩展,那就根据不同的服务器,单独开发吧。
3. Web.xml的安全配置
Web.xml可能通过配置<security-constraint>标签为资源设置安全访问控制,但Glassfish与Tomcat不同的是
Glassfish提供sun-web.xml文件,需要在<security-constraint>标签指定角色名称时,在sun-web.xml中进对
应,也就是说真正的角色名称,Glassfish只识别sun-web.xml中配置的,再通相关联到web.xml中。
4. Hibernate-JPA
都知道Tomcat是一个Servlet实现,Glassfish V2则是一个完善的EJB3的实现,当然已经包括JPA.(JPA的实现使用
的是Toplink-Essential).因为项目使用的是Hibernate-JPA,所以移植的时候,也不得不把Hibernate的JPA类库
移到项目中,但一运行结果报JPA类库找不到(真是奇怪),结果多次尝试到,把HIberante的JPA类库放到
domainname/lib/ext目录下,就能顺利加载了(目前没有弄清楚什么原因,也希望高手能够指点)
以上是我遇到一些问题总结,希望大家多提点建议。
Good Luck!
Yours Matthew!
posted on 2008-09-19 14:34
x.matthew 阅读(1278)
评论(2) 编辑 收藏 所属分类:
Application Server