主题 : Jeecms v3在weblogic上部署有问题 |
级别: 商业授权用户
|
1# 发表于:2011-05-16 21:39:53 IP:220.98.*.*
|
||||
---|---|---|---|---|---|
级别: 总版主
|
2# 发表于:2011-05-17 08:33:57 IP:220.41.*.*
在windows下通过weblogic部署应用程序是,应该首先把antlr-2.7.6.jar这个jar包复制到\weblogic\user_projects\domains\base_domain\lib这个文件夹下
然后在\weblogic\user_projects\domains\base_domain\bin这个文件夹下,修改startWebLogic.cmd这个文件,在这个文件下找到set CLASSPATH=%SAVE_CLASSPATH% 然后把其改成 set REP_PATH=%DOMAIN_HOME%\lib\antlr-2.7.6.jar set CLASSPATH=%REP_PATH%;%SAVE_CLASSPATH% 如果在Linux下,jar包复制时一样的,只是修改的文件变成了startWebLogic.sh,在这个文件下找到CLASSPATH="${SAVE_CLASSPATH}" 把其修改成 REP_PATH="${DOMAIN_HOME}/lib/antlr-2.7.6.jar" CLASSPATH="${REP_PATH}:${SAVE_CLASSPATH}" |
||
---|---|---|---|
级别: 商业授权用户
|
3# 发表于:2011-05-17 20:09:14 IP:220.98.*.*
谢谢版主,第二个问题是解决了,第一个问题怎么解决,提示cannot resoved to absolute file path /web-inf/cache/application
|
||
---|---|---|---|
级别: 商业授权用户
|
4# 发表于:2011-05-17 20:36:26 IP:220.98.*.*
研究了一下源代码,在WebEhCacheManagerFacotryBean.java中,定义了private Resource diskStoreLocation,然后通过spring注入在cache-context.xml中配置的diskStoreLocation.
<bean id="cacheManager" class="com.jeecms.common.web.WebEhCacheManagerFacotryBean"> <property name="configLocation"> <value>classpath:ehcache-application.xml</value> </property> <property name="diskStoreLocation"> <value>/WEB-INF/cache/application</value> </property> </bean> 由spring自动将/WEB-INF/cache/application包装为一个Resouce对象,实现是上ServletContextResource对象,然后通过this.diskStoreLocation.getFile().getAbsolutePath()方法来得到物理路径,实际上getAbsolutePath()是通调用servletContext.getRealPath()方法来获得物理路径的,通过servletContext.getRealPath()来获得物理路径已经不推荐使用了,在servlet中使用getServletContext.getRealPath()这个方法受到war 和non-war的影响,以及不同app server实现的影响,运气好的话,你常常会得到null,比如你在weblogic上部署war文件,又调用这个方法. 恰好jeecms部署在weblogic上就会遇到这个问题,会抛出异常 throw new FileNotFoundException( "ServletContext resource [" + path + "] cannot be resolved to absolute file path - " + "web application archive not expanded?"); 所以,如果想在weblogic上部署jeecms就不要在cache-context.xml中配置diskStoreLocation,直接在ehcache-application.xml中配置<diskStore path="java.io.tmpdir/jeecms/application"/>就可以了,这样可以保证不管在什么server上,都能正常运行. 不知道我分析得正不正确,如果版主有更好的办法,请不吝分享一下。也给让以后要部署到weblogic上的朋友少走点弯路。 |
||
---|---|---|---|
1
共1页