主题 : Jeecms v3在weblogic上部署有问题
级别: 商业授权用户
UID: 3806
积分:91 加为好友
威望: 0 精华: 0
主题:9 回复:38
注册时间:2010-03-01
在线时长:0
1#   发表于:2011-05-16 21:39:53  IP:220.98.*.*
如题,目前发现部署在weblogic上至少有两个问题:
1.cache-context.xml中diskStoreLocation设置的/web-inf/cache/apllication提示找不到绝对路径,这是个大问题,求解决方法.

2.Hibernate类找不到,不过这个与jeecms没有什么关系,是hibernate实现的关系,需要配置优先使用工程中的jar包即可解决.
级别: 总版主
UID: 10736
积分:148374 加为好友
威望: 205 精华: 42
主题:287 回复:126132
注册时间:2010-09-08
在线时长:15.43
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}"
路漫漫其修远兮,吾将上下而求索!
级别: 商业授权用户
UID: 3806
积分:91 加为好友
威望: 0 精华: 0
主题:9 回复:38
注册时间:2010-03-01
在线时长:0
3#   发表于:2011-05-17 20:09:14  IP:220.98.*.*
谢谢版主,第二个问题是解决了,第一个问题怎么解决,提示cannot resoved to absolute file path   /web-inf/cache/application
级别: 商业授权用户
UID: 3806
积分:91 加为好友
威望: 0 精华: 0
主题:9 回复:38
注册时间:2010-03-01
在线时长:0
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页