`
dinghy
  • 浏览: 34905 次
  • 性别: Icon_minigender_1
  • 来自: 京广之间
社区版块
存档分类
最新评论

关于Tomcat与GlassFish交替使用的注意事项

阅读更多

      最近改用Birt{Wtp} Eclipse,因为MyEclipse实在是很慢。而GlassFish plugin for Eclipse也还是不能顺利部署.

于是又捡起Tomcat来,去下了6.0.18.配置好数据源.迁移开发环境完毕.

 

       可是遇到了很多问题.现将问题的解决方案一一说明如下,希望后来人少费力气~~

 

      Question1、tomcat 6中的context.xml到底该怎么配.

 

1.确定数据库类型 ---oracle 9i2 数据库驱动 odbc14.jarclass12.jar,放到tomcat6lib----待测试

2.建立相应的dynamicWeb工程----testDataSource,发布到tomcat6server.这时,Eclipse会自动生成相应的server目录在左边Servers文件夹中.如下图.

这时server.xml中最下面Eclipse已经自动添加了一行.

<Context docBase="gzcdcWeb" path="/testDataSource" reloadable="true" source="org.eclipse.jst.jee.server:testDataSource"/>

3.继续在context.xml中本context块下添加如下一个resource元素.定义其中的数据源信息.

<Resource name="jdbc/XXXX" auth="Container" type="javax.sql.DataSource"

              maxActive="20" maxIdle="10" maxWait="-1" logAbandoned="true"

              username="un" password="pw" driverClassName="oracle.jdbc.driver.OracleDriver"

              url="jdbc:oracle:thin:@server:1521:XXXX"/>

Okay.

3.当有多个工程的时候怎么办.在一个context.xml中只能为一个Web工程配置相关信息.

tomcat默认在 ${WebProjectName}/META-INF下配置的context.xml即为该工程的对应context信息

将之前的context.xml放到 ${WebProjectName}/META-INF下即可.删除之前的context.xml中的Resource元素,一切正常.

 

did not find a matching property 应该是由于META-INF下未发现context.xml引起的.

 

最后一项未验证;

 

是否需要更新web.xml中的<resource-ref/>

<resource-ref>

          <description>Oracle DataSoure for Tomcat 6.0</description>

<res-ref-name>jdbc/XXXX</res-ref-name>

<res-type>javax.sql.ConnectionPoolDataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

 

Question 2、jdbc/XXXX 与 java:comp/env/jdbc/XXXX.

 

这个问题上回说到过,可能GlassFish比较高级,直接jdbc/XXXX就可以取到源了.

Tomcat上就得补上java:comp/env/jdbc/XXXX.

不过应该不是这个主要原因咯.先放着这个问题.我再看看.有没有终极解决方案.

 

不过像我一样,用tomcat做开发环境,在glassfish上做部署环境的朋友,可以先注意这个临时做法.

改一下Spring中的jndi命名或是应用中涉及jndi命名的地方.

 

 

Question 3、不匹配...

 

 

警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:appName' did not find a matching property. 

        这个问题未明确.是不是跟Question 1的配置有关系未确定.不过看到警告就头疼.谁知道原因请告诉我.看字面意思是没有找到一个属性 source,从而无法将其赋值为......

 

        Question 4、Struts版本问题

       

         Struts 1从1.3开始把taglib等包就此分离出去了.

         Struts 1从1.2开始,抛弃了很多过时的方法.

         Struts 2和Struts1基本上不用比较了.

         所以除了1和2的大版本,别想什么共存了.也不要随便更新版本.

 

        Question 5、sun.jdbc.rowset.CachedRowset的方法问题.

           这个类(CacheRowset)的实现是在Rowset.jar中的.不像很多人说的在JDK 1.5之后就自带了.1.5之后确实在包中有,但是那是一个接口,需要实例化.

          真正的这个类实现可以去SpringFramwork上下载一个完整依赖版本,从里面抽出来.

 

        Question 6、javaee.jar或者是j2ee.jar的问题.

         一般是把这个jar包放到WEB-INF/lib下,但是运行时,会提示你这个jar不被load,为什么呢,它会告诉你根据什么规范什么规范来着.

          但我操作的过程中,出现的问题,比这还要大,引起了更多的思考.

         

          启动WebApp的时候报错如下:比较恐怖

 org.apache.catalina.core.StandardContext listenerStart

严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationProcessingFilter' defined in file [D:\workspace\eclipse.birt.231\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\gzcdcWeb\WEB-INF\classes\ie\appContext-security.xml]: Cannot resolve reference to bean 'authenticationManager' while setting bean property 'authenticationManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationManager' defined in file [D:\workspace\eclipse.birt.231\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\gzcdcWeb\WEB-INF\classes\ie\appContext-security.xml]: Cannot resolve reference to bean 'daoAuthenticationProvider' while setting bean property 'providers' with key [0];

.....

          这是Spring自初始化去查找bean的问题,通过Debug后发现缺少类 javax.transaction.TransactionManager,一想这不就是javaee.jar中的类嘛.怎么会没有呢.

 

         再细想一下,当然是没有咯...Tomcat6只是一个Web容器,不需要去实现全部JavaEE标准.于是我将javaee.jar放到了${CATALINA_HOME}/lib下...这样肯定能找到类了.于是Spring初始化正常了.

 

         呵呵,还没完呢.

 

        Question 7、Tomcat与JavaEE

 

        访问初始页面,直接报错,一大堆.

 org.apache.catalina.core.StandardWrapperValve invoke

严重: Servlet.service() for servlet jsp threw exception

javax.servlet.ServletException: javax.servlet.jsp.tagext.TagAttributeInfo.<init>(Ljava/lang/String;ZLjava/lang/String;ZZLjava/lang/String;ZZLjava/lang/String;Ljava/lang/String;)V

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:275)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)

at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)

at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:135)

at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)

at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)

at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)

at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)

....

这是什么问题呢,分析后知道是加载类版本出现冲突了.但是怎么会冲突呢,后来锁定了doFilter类,

发现${CATALINA_HOME}/lib中自带一个servlet-api.jar,里面正好是javaee.jar中servlet相关的类簇.

于是想当然的认为servlet-api.jar是javaeye.jar的子集.当然确实是子集,不过版本和使用环境有差别.

删掉了Servlet-api.jar后,Tomcat提示无法启动,想了一下.采用了比较变态的招数.

 

把javaee.jar改名成servlet-api.jar后,一切正常了...

 

下回再补充birt相关的问题.

 

Tomcat跟GlassFish在完备程度上还是没法比呀.不过快多了...

      

分享到:
评论
2 楼 dinghy 2008-10-17  
yingwuhahahaha 写道

引用
把javaee.jar改名成servlet-api.jar后,一切正常了... 确实有点变态

哈哈.
后来我仔细比对了差别.发现Tomcat6018的Servlet-api.jar中除了正常javax.servlet.*下的类簇,还包括javax.servlet.Resources里面还存放了Web应用常用的dtd和xsd引用文件.
1 楼 yingwuhahahaha 2008-10-15  
引用
把javaee.jar改名成servlet-api.jar后,一切正常了...


确实有点变态

相关推荐

    Glassfish关于tomcat的文档

    Sun Microsystems声称,与Apache Tomcat相比,GlassFish应用服务器的Web容器功能更加可扩展、模块化、易于使用且更具适应性,同时还能提供相当的性能表现。此外,GlassFish还支持集群、持久化、消息传递等Tomcat不...

    比tomcat更好用的glassfish应用服务器

    【标题】:“比tomcat更好用的glassfish应用服务器” 【描述】:“比tomcat好用的web容器,可靠速度快” 在IT行业中,选择合适的应用服务器对于任何Web应用程序的高效运行至关重要。Tomcat,作为Apache软件基金会...

    GlassFish5.0安装包

    2. 高性能:相比Tomcat,GlassFish在处理并发请求和大型应用时表现出更高的性能,特别是在使用EJB和JMS等高级特性时。 3. 扩展性:GlassFish支持集群部署,可以轻松扩展以应对高负载需求,通过Admin Console可以...

    eclipse与glassfish3.1.1使用配置-连接池配置-JNDI配置[归纳].pdf

    "Eclipse 与 GlassFish 3.1.1 配置指南" 概述: 本文档旨在指导读者如何在 Eclipse 中配置 GlassFish 3.1.1,实现连接池配置和 JNDI 配置。同时,也会解决在部署过程中可能出现的异常。 一、GlassFish 3.1.1 简介 ...

    GlassFish2.0的安装

    相比其他流行的开源应用服务器如Tomcat、Jboss和Resin,GlassFish 2.0 提供了更全面的企业级功能。 **Windows环境下GlassFish 2.0的安装步骤:** 1. **下载GlassFish Server v2.1**:访问官方网址...

    glassfish集群搭建手册

    手册的描述部分使用了重复的语言来强调其内容,即手册是关于Glassfish集群搭建的具体步骤和技巧。通过提及标签“glassfish”,我们可以知道该手册专注于Oracle Glassfish这一特定的产品。标签用于搜索和分类文档,在...

    glassfish单机集群jk_little

    "mod_jk.so"是Apache HTTP服务器与Tomcat或Glassfish之间通信的动态链接库。Apache通过这个模块与应用服务器建立连接,实现请求的转发。 "commands.txt"可能包含了运行或管理Glassfish集群的命令,例如启动、停止...

    glassfish 教程指南

    `mq-tech-over.pdf`可能是Glassfish消息队列的技术概述,深入解析了其工作原理和技术细节,包括JMS API的使用,消息持久化策略,以及与外部消息系统的集成。 `application-development-guide.pdf`是应用开发指南,...

    Glassfish V2与Apache的整合

    《Glassfish V2与Apache整合详解》 在IT行业中,服务器的高效运行和灵活配置是提升应用程序性能的关键。本文将详细介绍如何将Java EE应用服务器Glassfish V2与Web服务器Apache进行整合,以实现更强大的服务架构。...

    webServer tomcat5 / tomcat6 / tomcat7 / tomcat8

    至于压缩包内的文件"GlassFish_Tomcat[1].pdf",GlassFish是一个完整的Java应用服务器,它也支持Servlet和JSP,但与Tomcat不同的是,GlassFish是全功能的应用服务器,提供了EJB(Enterprise JavaBeans)、JMS(Java...

    linux下实现glassfish自动启动

    ### 注意事项 - 在运行过程中,确保Glassfish所需的Java环境已安装并配置好。 - 确保在启动脚本中指定的域(domain1)已存在。如果没有,需要使用`asadmin create-domain`命令创建。 - 脚本中的命令可能需要根据你...

    GlassFish安装向导

    在使用 GlassFish 时,需要注意一些重要的事项。例如,在创建受管节点时,需要注意 hosts 文件中需要增加所有受管节点的主机名。同时,GlassFish 的密码默认为明文,为了安全性,需要对密码进行加密。可以使用 ...

    glassfish安装配置文档

    本文档将指导 readers 通过安装和配置 GlassFish 服务器,并将其与 Eclipse 集成以便进行调试。 一、GlassFish 安装 GlassFish 安装非常简单,只需要下载 GlassFish 安装程序,运行安装程序,然后按照向导的提示...

    Tomcat6远程调用GlassFishV2的sessionbean

    Tomcat6远程调用GlassFish V2的session bean  GlassFish V2 是一个比较完整的ejb3服务器,性能也有了很大的提高,因此最近试用了一下,并通过Tomcat进行了分布式调用。  Session Bean: ...

    glassfish和ant安装与配置

    ### GlassFish和Ant安装与配置 #### 一、概述 本文档主要介绍如何在Windows平台上安装和配置GlassFish服务器以及Ant构建工具,并在Eclipse IDE中进行相应的设置,以便能够顺利地开发、构建和部署Java Web应用程序...

    Glassfish部署web项目

    本文详细介绍了如何使用Glassfish部署Web应用的过程,包括开发工具的选择、Glassfish的安装与配置以及Web应用的具体部署方法。通过本文的学习,读者应该能够掌握如何有效地在Glassfish环境下部署和管理Web应用。

    glassfish-3.1.2-windows

    glassfish-3.1.2-windows比Tomcat好用的服务器

    glassfish安装步骤.txt

    #### 五、其他注意事项 - 在安装过程中,可能会遇到一些错误提示或异常情况,这时候需要根据日志文件中的信息进行排查。 - 如果安装失败或出现未知问题,建议查阅官方文档或寻求社区帮助。 - 为了确保系统的稳定性...

Global site tag (gtag.js) - Google Analytics