通过console控制台发布项目后 发现出现
ClassNotFoundException:org.hibernate.hql.ast.HqlToken错误
发现问题是 weblogic中使用较低版本的hibernate 而项目中使用了最新的hibernate3.5
weblogic加载了了weblogic的lib下的 包结构后 如果发先应用中存在相同的jar下的包 不会使用新的jar
所以出现应用的jar问题
解决办法 需要在weblogic的jar加载之前加载hibernate的包
在Middleware\user_projects\domains\域名称\bin\startWebLogic.cmd加入
set PRE_CLASSPATH=C:\project\lib\hibernate3.jar;C:\project\lib\hibernate-jpa-2.0-api-1.0.1.Final.jar;C:\project\lib\hibernate-commons-annotations-4.0.1.Final.jar
将set CLASSPATH=%SAVE_CLASSPATH%改为
set CLASSPATH=%PRE_CLASSPATH%;%SAVE_CLASSPATH%
重新启动发现 出现找不到Dom4jExcepiton类
解决方法:
set PRE_CLASSPATH=C:\project\lib\hibernate3.jar;C:\project\lib\hibernate-jpa-2.0-api-1.0.1.Final.jar;C:\project\lib\hibernate-commons-annotations-4.0.1.Final.jar
;C:\project\lib\dom4j-1.6.1.jar;
将set CLASSPATH=%SAVE_CLASSPATH%改为
set CLASSPATH=%PRE_CLASSPATH%;%SAVE_CLASSPATH%
重新启动发现 又找不到javassist中的类 继续加入
set PRE_CLASSPATH=C:\project\lib\hibernate3.jar;C:\project\lib\hibernate-jpa-2.0-api-1.0.1.Final.jar;C:\project\lib\hibernate-commons-annotations-4.0.1.Final.jar
;C:\project\lib\dom4j-1.6.1.jar;C:\project\lib\javassist-3.15.0-GA.jar
将set CLASSPATH=%SAVE_CLASSPATH%改为
set CLASSPATH=%PRE_CLASSPATH%;%SAVE_CLASSPATH%
重新启动发现 报 Cannot set web app root system property when WAR file is not expanded。
通过源码 发现如下代码
/* */ public static void setWebAppRootSystemProperty(ServletContext servletContext)
/* */ throws IllegalStateException
/* */ {
/* 138 */ Assert.notNull(servletContext, "ServletContext must not be null");
/* 139 */ String root = servletContext.getRealPath("/");
/* 140 */ if (root == null) {
/* 141 */ throw new IllegalStateException(
/* 142 */ "Cannot set web app root system property when WAR file is not expanded");
/* */ }
发现是因为 servletContext.getRealPath("/"); 获取不到
这时才知道 因为打包的war没有完全发布出来 是获取不到根目录的 所以采用文件夹的方式发布 就没有这个问题
建议将
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
修改为:
<servlet>
<servlet-name>log4jConfigListener</servlet-name>
<servlet-class>org.springframework.web.util.Log4jConfigServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
重新启动 发现没有启动cxf 报soap异常
将web。xml中
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
修改为
<web-app xmlns="http://java.sun.com/xml/ns/j2ee">
重新启动 发现启动成功