weblogic 部署报错问题总结

来源:互联网 发布:淘宝我的下单截图 编辑:程序博客网 时间:2024/06/06 12:21

weblogic.xml是可以选的,可以不要,除非你需要先加载web-inf/lib文件。
weblogic.xml主要配置web容器的一些属性,比较JSP编译时间间隔、编译路径等web.xml是配置整个应用工程的属性,如servlet等

第一个问题: [HTTP Session:100039]Replicated HTTP sessions specified for webapp: ydjyjc, but clustering not enabled

 

解决方案;

这个错误,其实大家很容易犯,但有个好处是,这个问题百度里很多答案,大家只要一百度都能搜索了到。 但是我有点傻,百度里告诉我要修改应用里面的weblogic.xml文件,把 replicated修改为 memory ,但我却从weblogic安装目录里面去全局搜索,搜索出所有的weblogic.xml,然后把  replicated修改为 memory,但是重新部署应用的时候,那些文件又重新生成了,我当时还在骂,到底谁写出这么烂的方法。后来发现我是傻到不行啊,应用文件里的weblogic.xml 指的是,你那个项目里面的weblogic.xml,(就比如web.xml).这是我的理解失误,我想大家是不会犯这样的错误的。

 

再次总结下解决方案,找到你的项目里的weblogic.xml 文件,修改里面的 配置

 

<session-descrīptor>
<session-param>
<param-name>PersistentStoreType</param-name>
<param-value>replicated</param-value>
</session-param>
</session-descrīptor>

 

把这段内容里面的 replicated 修改为 memory 就好了,有些版本可能不一样,配置的名称可能不同,如 我的weblogic.xml 是长这样的

<session-descriptor>
  <persistent-store-type>replicated</persistent-store-type>
  <url-rewriting-enabled>true</url-rewriting-enabled>
  <sharing-enabled>true</sharing-enabled>
 </session-descriptor>

 

但也是同样的修改方法,把这段内容里面的 replicated 修改为 memory 就好了。

 

 

第二个问题、找不到 jndi ,我在weblogic里面配置了数据源,但应用里面不知道该如何修改,这里需要看日志文件,日志文件路径一般在  E:\bea\user_projects\domains\epsoft_domain(这里是不一样的,是你自己建立的domain的名字)\servers\Server-zjyb(这里也是自己服务的名字)\logs

 

路径只是一个参考,要根据自己的配置不同而修改,这里面的logs有两个文件必须要看 Server-zjyb.log 和 Server-zjyb.out  ,我的服务名字叫 Server-zjyb,所以这里都是 Server-zjyb打头的,这里的日志文件根据你的服务名字来,后缀一般都是.out 和 .log(再次强调,日志文件很重要)。

 

解决方案 : 看 .log日志文件,报的错误 javax.naming.NameNotFoundException: While trying to look up comp/env/jdbc/insiisin /app/webapp/ydjyjc.war/4821373.; 
remaining name 'comp/env/jdbc/insiis'

 

在我打好的war包中查找   comp/env/jdbc/insiis,但是没有找到

 

这里回顾一点,我的weblogic部署的时候,配置的jndi的名字是jdbc.ydjyjc

 

所以,查找你开发的项目里,所以包含  comp/env/jdbc/insiis 的文件,然后把 comp/env/jdbc/insiis 修改成 comp/env/jdbc/ydjyjc   。(一切就都好了,这里需要强调一点,jndi的名字是 jdbc.ydjyjc,但是项目里面一般配置的时候都是斜杠,jdbc/ydjyjc,这点要注意,如果你在项目里配置的是jdbc点ydjyjc那就找不到了  

 

第三个问题:

<Error> <ServletContext-/sjtc> <BEA-000000> <action: null
org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from com.insigma.odin.framework.privilege.entity.SmtResource t where t.publicflag=:publicflag and t.status=:status]
at org.hibernate.hql.ast.HqlLexer.panic(HqlLexer.java:57)
at antlr.CharScanner.setTokenObjectClass(CharScanner.java:340)
at org.hibernate.hql.ast.HqlLexer.setTokenObjectClass(HqlLexer.java:31)
at antlr.CharScanner.<init>(CharScanner.java:51)
at antlr.CharScanner.<init>(CharScanner.java:60)
Truncated. see log file for complete stacktrace
 
分析: 这个错误是在 日志文件.out中发现的。明显的表现是,项目部署正常,但是访问页面报404.后来看.out日志文件才发现,原来是报错了。(再次强调一点,查看日志很重要),出现这个问题的原因,主要是weblogic10里面的某些东西和你项目里的某些jar包冲突了。
 
 
解决方案 :
找到 你在开发的项目,就是你每天敲代码的地方,这里简称应用文件,在应用文件中,找到weblogic.xml 文件,在里面加入
<container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
 
即可。(这段代码只需要被<weblogic-web-app>标签包含就行,我就写在这个位置</weblogic-web-app>
 
 第四个问题:

For server YDJY-JC, the Node Manager associated with machine MachineYDJYJC is not reachable.

All of the servers selected are currently in a state which is incompatible with this operation or are not associated with a running Node Manager or you are not authorized to perform the action requested. No action will be performed.


解决方案,创建机器的时候,在nodemanager中,第一个选项有ssh、plain、等,这里选择plain就Ok了。


第五个问题:

JSP乱码:
 在你工程目录下面的/WEB-INF里面有一个weblogic.xml这个文件里有字符集设置
(这个weblogic.xml文件是你在使用weblogic对自己的这个WEB工程进行发布时,通过向导一步一步进行参数设置之后,自动生成的)。

解决办法:
         weblogic.xml里的字符集设置为: 
<charset-params>      
<input-charset>          
<resource-path>/*</resource-path>          
<java-charset-name>UTF-8</java-charset-name>      
</input-charset>  
</charset-params>


第六个问题

部署出错。
       部署出错常见问题就是,web.xml不规范。web.xml不规范将直接导致部署不成功!weblogic对web.xml检查非常严格,大部分能在tomcat下调试成功的,在weblogic下不一定会成功。原因是,tomcat不能算是一个服务器所以检查相对不够严格。注意这里说的tomcat指的是5.5及以下。tomcat6在整个结构上有了一定的改变,部分tomcat5.5能通过的,在tomcat6下并不一定成功!所以出错后,应当根据提示检查下web.xml书写是否规范。
       部署不成功的另一种问题,JRE版本不对应。换句话说就是服务器上的JDK低于你开发环境中的JDK,导致的版本出错。这个是比较郁闷的,通常情况下有两种建议:其一,最好的办法是将服务器上的JDK升级至官方最高版本。这样做的好处是,不用担心版本问题,另外新版本通常支持新的特性,对开发也有很大的帮助。其二,将本地的JDK和服务器上的JDK控制在同一个版本。这样就不用担心版本不对应。下面说下问题出现以后的解决方法,通过MyEclipse的项目属性->JRE设置->添加新的JRE->让项目的使用新添加的JRE。


第七个问题


乱码问题。

 通常情况下在移植项目到Weblogic服务的时候,容易碰到HTML乱码问题。这个问题通常是因为页面中的Meta标签未生效


解决的办法是在web.xml中加入下面的代码:

XML/HTML代码
Java代码
<mime-mapping>       
      <extension>html</extension>       
      <mime-type>text/html;charset=UTF-8</mime-type>       
</mime-mapping>


第八个问题
有时候这样的错误,还会报关于“zip”压缩文件格式错误的提示。这是因为要发布的服务包在修改了之后发生了格式错误,可以通过拿一个可以正常发布的包,把包里面的内容删空,再把要发布的服务包里的内容全部拷贝出来,放进空包里,然后再把空包的名字改成要发布的包名就可以解决了。


第九个问题
web.xml里的contextConfigLocation,引入的资源中间不允许存在注释和空行;<display-name>DWR Servlet</display-name>不能与description存在重复,即2选1;
这里引入的资源文件特别要注意不要存在注释及空行,在weblogic下都会报错,说找不到资源。
display-name与description只需要2选1就可以了,不然会报莫名的错误。


第十个问题
关于xml解析的jar包冲突,这个烦了我半天,解决的办法是移除去掉wstx.jar包,在部署完成后再引入,重新部署。
我这里已经成功,以后重新启动就不需要再部署了。

第十一个问题

在安装完成weblogic之后,我们需要把hibernate框架使用的一个jar包(antlr-2.7.6rc1.jar)放到weblogic的安装目录里。具体路径为D:\bea\wlserver_10.3\common\lib。如果我们还不能够解决冲突的话则要到工程所在的域文件夹D:\bea\user_projects\domains\base_domain\bin里,setDomainEnv.cmd的文件中修改服务的环境变量,把A步骤中的路径加上:右键 -> 编辑,打开文件,在set CLASSPATH之前加上:set PRE_CLASSPATH=D:\bea\wlserver_10.3\common\lib\antlr-2.7.6rc1.jar;在set CLASSPATH之后加上:

set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%

第十二个问题

Date和Calender的区别

在tomcat 6.0上开发项目的时候,我使用了DateUtils下面的addWeeks(?,?)方法,但是,在weblogic下面,只要所有使用到这个方法或者 类似这个方法的地方点击链接都会报struts找不到异常,但是就奇怪了,后来一句句跟代码,才发现只要执行到这一句都会报错。于是就换成了用 Calendar的方式解决了问题。

部分代码如下:

Date startDate = new Date();         //     Date endDate = DateUtils.addWeeks(startDate, 1);       //以前用的报错的东东Calendar c =new GregorianCalendar();c.setTime(startDate);c.add(Calendar.DAY_OF_MONTH, 7);Date endDate = c.getTime();

后来在网上查了一些文章,还发现在在weblogic上部署的时候需要注意的一些问题及解决办法,一起贴出来和大家分享。 

第十三个问题   

ServletContext

今天发现在JSP页面中直接调用.getServletContext()会出错。解决方法:PageContext.getServletContext();

以上为本人在进行项目移植的时候遇到的问题,当然可能不够完整。希望大家在实际操作中能将新的问题反馈给我,好补充这篇文章。

第十四个问题

JSP写的验证码

这个验证码比较简单在文件的一开始加入out.clear();即可解决问题!

 //8月10日更新  事实上out.clear();治标不治本!图片确实能显示出来了,可是控制台却报IO异常。折腾了半天找到原因,weblogic同tomcat不太一样,详情看代码。

Java代码
/** Tomcat写法 */     

ImageIO.write(image, "JPEG", response.getOutputStream());    out.clear();    out=pageContext.pushBody();

/** Weblogic写法 */    

ImageIO.write(image, "JPEG", response.getOutputStream());

第十五个问题
FCKeditor JS错误

 这个问题更加BT,简直让人无法忍受!你用记事本把根目录所有的文件都打开然后CTRL+S保存就OK了!另外还有可能出现载入XML错误!同上面一样,在web.xml中加入这段话就OK了!

XML/HTML代码

<mime-mapping>           <extension>xml</extension>           <mime-type>application/xml</mime-type>   </mime-mapping>



 




0 0