当前位置: 代码迷 >> Web前端 >> weblogic10.3忧闷调试笔记
  详细解决方案

weblogic10.3忧闷调试笔记

热度:706   发布时间:2012-11-08 08:48:12.0
weblogic10.3郁闷调试笔记
weblogic10.3郁闷调试笔记

最近要发布一个前人写的程序,原程序跑在tomcat下的。这次发布又是发布到weblogic10.3下面。
唉。想着就怕啊。就没有想过它会跑通。


问题一:
发布war包,weblogic10.3包控制台和前台页面,都报第一个错误。信息如下:

Unable to access the selected application.
Exception in AppMerge flows' progression
Exception in AppMerge flows' progression
Bean already exists: "weblogic.j2ee.descriptor.TagLibBeanImpl@34eeb6fb(//TagLibs[/WEB-INF/frame-information.tld])"
Bean already exists: "weblogic.j2ee.descriptor.TagLibBeanImpl@34eeb6fb(//TagLibs[/WEB-INF/frame-information.tld])"

仔细一看,原来是web.xml里面的mapping有重复的,就是对frame-information.tld的定义。删掉了重复的两条定义。这个问题解决。(不过为啥TOMCAT不报错,就不得而知了,不过这个前人也真是有点粗心啊,估计多ctrl + v了一下)

问题二:

这个问题就比较郁闷了。前人的一个自定义标签无法加载。原来它的标签类里面是这样书写的:
logPatternAbsolutePath = this.pageContext.getServletContext()
     .getRealPath(style.getLogPattern());
if (log.isDebugEnabled()) {
log.debug("=========================style.getLogPattern():"
    + style.getLogPattern());
log.debug("========================logPatternAbsolutePath:"
    + logPatternAbsolutePath);
}
if (logPatternAbsolutePath == null || logPatternAbsolutePath.equals("")) {
log.debug("logPatternAbsolutePath is null!");
return BodyTagSupport.EVAL_BODY_INCLUDE;
}
其中的log.debug都是我后来加上的。最初由于没有这些DEBUG信息的帮助,我无法知道是哪里出了问题,只知道本来应该显示的页面显示的是空白。就是因为这里返回的空。
为什么在TOMCAT又是好的呢?因为TOMCAT和WEBLOGIC对这个getServletContext().getRealPath的实现不同,tomcat可以返回正确的路径,weblogic只会返回一个null。

后来查询WEBLOGIC的文档,做了如下处理,在weblogic.xml文件中加入了配置:
<container-descriptor>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>
完整的weblogic.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd
  http://www.bea.com/ns/weblogic/90
  http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
<context-root>/</context-root>
<container-descriptor>
   <show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>
</weblogic-web-app>

顺带说一句,这个老项目很多路径都不是相对的,只能采用最土的办法,将项目发布在根“/”下面,这我们也没有时间去修改了。所以配置里面有<context-root>/</context-root>
1 楼 daxun1983 2012-03-20  
                                               
2 楼 daxun1983 2012-03-20