Habitat Framework

专注于Java EE企业级开发
posts - 13, comments - 81, trackbacks - 0, articles - 5
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

终于还是要部署到Weblogic上的
经过一下午的调试,总结出要改两个地方
1:Spring的servlet装载顺序
Tomcat是标准的Servlet2.4规范的容器,能够很好的维持servlet加载的顺序,
但是Weblogic9.x不是,因此加载的时候需要换用Spring的另一个Servlet来保证加载的顺序正确
<servlet>
  <servlet-name>context</servlet-name>
  <servlet-class>org.springfromword.context.ContextLoclageServlet</servlet-class>
 </servlet>
 2.Acegi的filter也需要改变装载的类:
<filter>
        <filter-name>acegifilter</filter-name>
        <filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class>
        <init-param>
            <param-name>targetClass</param-name>
            <!--<param-value>net.sf.acegisecurity.util.FilterChainProxy</param-value>-->
            <param-value>net.sf.acegisecurity.context.HttpSessionContextIntegrationFilter</param-value>
        </init-param>
</filter>
3.更换两个包antlr和cglib
Spring要求antlr 2.7.5 的支持,但是Weblogic9的Weblogic.jar中集成的版本不够高,所以启动会报错
修改启动weblogic启动的环境变量,将这个包加在weblogic.jar包之前(注意一定要加在前面)。
weblogic 8中修改:bea\weblogic81\common\bin\commEnv.cmd(.sh)这个文件。
weblogic 9中修改:bea\weblogic90\common\bin\commEnv.cmd(.sh)这个文件,
修改后大体如下所示:
set WEBLOGIC_CLASSPATH=%PATCH_CLASSPATH%;%JAVA_HOME%\lib\tools.jar;%WL_HOME%\server\lib\antlr-2.7.5.jar;%WL_HOME%\server\lib\weblogic_sp.jar;%WL_HOME%\server\lib\weblogic.jar
就可以解决在weblogic server 上部署spring应用程序的问题了。
如果在加载中还碰到java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)这个问题出现,则必须将cglib-nodep-2.1_2.jar也加到classpath中weblogic.jar之前。
或者对于weblogic server 9在weblogic.xml中使用
<container-descriptor>
  <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
优先使用web-inf中使用的class而不是用先使用weblogic.jar包中的ClassVisitor这个类。(针对weblogic server 9)


只有注册用户登录后才能发表评论。


网站导航: