Posted on 2006-09-08 11:01
Kerwin Weng 閱讀(1244)
評論(0) 編輯 收藏 所屬分類:
Java EE
終于還是要部署到Weblogic上的
經(jīng)過一下午的調(diào)試,總結(jié)出要改兩個地方
1:Spring的servlet裝載順序
Tomcat是標(biāo)準(zhǔn)的Servlet2.4規(guī)范的容器,能夠很好的維持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啟動的環(huán)境變量,將這個包加在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應(yīng)用程序的問題了。
如果在加載中還碰到j(luò)ava.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)這個問題出現(xiàn),則必須將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>
優(yōu)先使用web-inf中使用的class而不是用先使用weblogic.jar包中的ClassVisitor這個類。(針對weblogic server 9)