项目从tomcat向weblogic迁移遇到的一些问题
项目从tomcat向weblogic迁移遇到的一些问题
2011-08-24 09:34
(转载于http://hi.baidu.com/stevenblake/blog/item/2f123f0f7668e0d67b89478b.html)
问题一:org.springframework.beans.factory.nosuchbeandefinitionexception: no bean named '
springsecurityfilterchain' is defined
解决:将web.xml中
<context-param>
<param-name>contextconfiglocation</param-name>
<param-value>
classpath*:/applicationcontext*.xml
</param-value>
</context-param>
修改成:
<context-param>
<param-name>contextconfiglocation</param-name>
<param-value> classpath*:applicationcontext.xml,classpath*:applicationcontext_time.xml,classpath*:applicationcontext-security.xml
</param-value>
</context-param>
原因:weblogic解析web.xml时不支持通配符
问题2:classnotfoundexception: org.hibernate.hql.ast.hqltoken
解决:将antlr-2.7.6.jar放到c:\oracle\middleware\jrockit_160_17_r28.0.0-679\jre\lib\ext下面
原因:weblogic默认先加载ejb-ql parser,存在重名类.将antlr-2.7.6.jar放于weblogic所用jdk的lib/ext下
可先加载antlr-2.7.6.jar
问题3:报csrf错误
解决:将以前web.xml关于dwr的servlet配置:
<servlet>
<servlet-name >dwr</servlet-name>
<servlet-class>org.directwebremoting.spring.dwrspringservlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
修改成
<servlet>
<servlet-name >dwr</servlet-name>
<servlet-class>org.directwebremoting.spring.dwrspringservlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>crossdomainsessionsecurity</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowscripttagremoting</param-name>
<param-value>true</param-value>
</init-param> <load-on-startup>1</load-on-startup>
</servlet>
原因:dwr跨域访问的安全问题,weblogic加强了安全机制
问题4:因为用的struts2 convention 零配置,启动后运行报no action found error 错误,找不到action;
解决:这个问题比较麻烦:
首先要更新struts2.1.6到struts2.2.1.
另外:将struts.xml加入
<constant name="struts.convention.action.fileprotocols" value="jar,zip" />
<constant name="struts.convention.action.includejars" value=".*?/_wl_cls_gen.*?jar(!/)?" />
最后:将src文件夹加入meta-inf文件夹。里面放入任意文件,目的是让其它编译到classes文件夹下
原因:我也说不清楚,参考的网友的这篇文章:http://aaa5131421.iteye.com/blog/558463
最后,为了达到最好的性能,将以前的dbcp换成weblogic的数据源吧。
配置方法很简单:
weblogic中首先创建一个数据源例如:jndi名称为:jdbc/db301,数据源的连接池初始大小以最大数根据实际情况作出配置
然后在applicationcontext.xml中加入
<jee:jndi-lookup id="datasource" jndi-name="jdbc/db301" />,替换以前的datasource配置
weblogic的jmrc的确是一个非常强大的东东,对于性能瓶颈分析非常好,对于它的使用,目前还是一知半解,希望有更熟悉
的童鞋能作出一些讲解;在这里,我也只是一个抛砖引玉.。
附上一张jmrc运行图: