设为首页 收藏本站
查看: 560|回复: 0

[经验分享] 关于Tomcat与GlassFish交替使用的注意事项

[复制链接]

尚未签到

发表于 2017-2-5 07:17:05 | 显示全部楼层 |阅读模式
  最近改用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在完备程度上还是没法比呀.不过快多了...
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-337547-1-1.html 上篇帖子: 【性能测试入门】 使用JMeter/Tomcat/Visual VM 下篇帖子: ssh 不能释放tomcat数据库连接池中的连接
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表