portal异常解决步骤

来源:互联网 发布:充话费软件下载 编辑:程序博客网 时间:2024/05/01 19:58

Portal 异常解决案例分析

一、异常信息: Weblogic Server Version : SP3 ; JDK Version : 1.4

当在生产环境中登录portalAdmin应用时,左边的树无法展现,后台报错如下(测试环境正常):

<2008-6-23 下午03时06分21秒 CST> <Error> <Delegation> <BEA-403108> <Exception while parsing DA hierarchy. DA Hierarchy XML: <?xml version="1.0" encoding="UTF-8"?> <hierarchy xmlns="http://www.bea.com/servers/p13n/xsd/delegation/hierarchy/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/servers/p13n/xsd/delegation/hierarchy/1.0.0 delegation-hierarchy-1_0_0.xsd"> <node name="PortalSystemDelegator" /> </hierarchy> org.xml.sax.SAXParseException: Document is invalid: no grammar found.        at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)        at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)        at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:76)        at com.bea.p13n.delegation.management.internal.DelegationHierarchyParser. getDelegationHierarchy(DelegationHierarchyParser.java:102)        at com.bea.p13n.delegation.management.internal.DelegationHierarchyLDAPPersistenceManager. parseData(DelegationHierarchyLDAPPersistenceManager.java:254)        at com.bea.p13n.delegation.management.internal.DelegationHierarchyLDAPPersistenceManager. get(DelegationHierarchyLDAPPersistenceManager.java:228)        at com.bea.p13n.delegation.management.internal.DelegationHierarchyDelegate. getHierarchyRoot(DelegationHierarchyDelegate.java:87)        at com.bea.p13n.delegation.management.DelegationRoleManager.getHierarchyRoot (DelegationRoleManager.java:62)        at com.bea.jsptools.delegation.Pruner.isRootDARole(Pruner.java:143)        at com.bea.jsptools.delegation.PortalNodePruner.isEnabled(PortalNodePruner.java:84)        at com.bea.jsptools.common.PrunableTreeNode.checkEnabled(PrunableTreeNode.java:188)        at com.bea.jsptools.portal.PortalHierarchyServlet.generateTopLevelNodes (PortalHierarchyServlet.java:319)        at com.bea.jsptools.portal.PortalHierarchyServlet.generateTree(PortalHierarchyServlet.java:135)        at jsp_servlet._portaltools.__portalmgmttree._jspService(__portalmgmttree.java:5123)        at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run (ServletStubImpl.java:996)        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)        at com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:313)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)        at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:628)        at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:412)        at com.bea.netuix.servlets.controls.content.JspContent.beginRender(JspContent.java:464)        at com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:424)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:434)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:175)        at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:95)        at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:388)        at com.bea.netuix.nf.UIControl.render(UIControl.java:580)        at com.bea.netuix.servlets.controls.PresentationContext.render(PresentationContext.java:345)        at com.bea.netuix.servlets.util.RenderToolkit.renderChild(RenderToolkit.java:123)        at com.bea.netuix.servlets.jsp.taglib.RenderChild.doStartTag(RenderChild.java:58)        at jsp_servlet._framework._skeletons._beatools.__gridlayout._jspService(__gridlayout.java:271)        at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run (ServletStubImpl.java:996)        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)        at com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:313)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)        at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:628)        at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:412)        at com.bea.netuix.servlets.controls.JspRenderer.renderAlt(JspRenderer.java:185)        at com.bea.netuix.servlets.controls.JspRenderer.beginRender(JspRenderer.java:88)        at com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:420)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:434)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:175)        at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:95)        at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:388)        at com.bea.netuix.nf.UIControl.render(UIControl.java:580)        at com.bea.netuix.servlets.controls.PresentationContext.render(PresentationContext.java:345)        at com.bea.netuix.servlets.util.RenderToolkit.renderChild(RenderToolkit.java:123)        at com.bea.netuix.servlets.jsp.taglib.RenderChild.doStartTag(RenderChild.java:58)        at jsp_servlet._framework._skeletons._beatools.__gridlayout._jspService(__gridlayout.java:271)        at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run (ServletStubImpl.java:996)        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)        at com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:313)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)        at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:628)        at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:412)        at com.bea.netuix.servlets.controls.JspRenderer.renderAlt(JspRenderer.java:185)        at com.bea.netuix.servlets.controls.JspRenderer.beginRender(JspRenderer.java:88)        at com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:420)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:434)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:175)        at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:95)        at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:388)        at com.bea.netuix.nf.UIControl.render(UIControl.java:580)        at com.bea.netuix.servlets.controls.PresentationContext.render(PresentationContext.java:345)        at com.bea.netuix.servlets.util.RenderToolkit.renderChild(RenderToolkit.java:123)        at com.bea.netuix.servlets.jsp.taglib.RenderChild.doStartTag(RenderChild.java:58)        at jsp_servlet._framework._skeletons._beatools.__gridlayout_outermost._jspService (__gridlayout_outermost.java:285)        at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run (ServletStubImpl.java:996)        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)        at com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:313)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)        at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:628)        at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:412)        at com.bea.netuix.servlets.controls.JspRenderer.renderAlt(JspRenderer.java:185)        at com.bea.netuix.servlets.controls.JspRenderer.beginRender(JspRenderer.java:88)        at com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:420)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:434)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:444)        at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:175)        at com.bea.netuix.nf.Lifecycle.runOutbound(Lifecycle.java:220)        at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:165)        at com.bea.netuix.servlets.manager.UIServlet.runLifecycle(UIServlet.java:357)        at com.bea.netuix.servlets.manager.UIServlet.service(UIServlet.java:198)        at com.bea.netuix.servlets.manager.PortalServlet.service(PortalServlet.java:559)        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run (ServletStubImpl.java:996)        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)        at com.bea.servlet.PortalSystemAdministratorFilter.doFilter (PortalSystemAdministratorFilter.java:78)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)        at com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:313)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run (WebAppServletContext.java:6458)        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)        at weblogic.servlet.internal.WebAppServletContext.invokeServlet (WebAppServletContext.java:3661)        at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178) > 

 二、处理步骤:

1.异常定位:

通过后台所报异常为:

org.xml.sax.SAXParseException: Document is invalid: no grammar found.        at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)        at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)        at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:76)

可初步判断为解析XML文件出错,而进一步发现portalAdmin应用是在生成portal项目时,为方便门户管理而自动生成的应用,故排除portal引起异常

2.解析器配置:了解Weblogic在解析XML文件时寻找解析器的顺序:

(1)寻找JDK_Home/jre/lib目录下的JAXP.properties文件,而JDK1.4没有这个配置文件。一般JAXP.properties配置文件内容为: javax.xml.transform.TransformerFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl javax.xml.parsers.DocumentBuilderFactory=org.apache.xalan.processor.TransformerFactoryImpl

(2)通过Weblogic启动脚本CLASSPATH中寻找(在Weblogic启动脚本里没有发现,一般通过配置文件引入。常用解析器:xml-apis.jar;xercesImpl.jar)

(3)使用Weblogic默认解析器,位于weblogic.jar/META-INF/services/下的3个配置文件

3.通过后台日志输出的配置信息检查根因:通过比较两个不同环境的后台nohup.out日志信息,

发现在CLASSPATH有区别:生产环境-CLASSPATH中指定了解析器:

/export/home/bea/imep/frameweb/WEB-INF/lib/xml-apis.jar:

/export/home/bea/imep/frameweb/WEB-INF/lib/xercesImpl.jar:

而测试环境中没有进行指定,进一步说明这两个jar包有问题,通过寻找jar包路径发现在/export/home/bea/imep/frameweb/WEB-INF/lib/路径下丢失了xml-apis.jar包,故解析XML出现异常

三、测试验证:

1.模拟错误通过在测试环境启动脚本CLASSPATH中增加解析器jar包路径

/export/home/bea/imep/frameweb/WEB-INF/lib/xml-apis.jar:

/export/home/bea/imep/frameweb/WEB-INF/lib/xercesImpl.jar:

并验证jar包是否存在(xml-apis.jar不存在,xercesImpl.jar存在)至此,在解析器配置方面,两个环境已达到一致

2.测试通过重新启动测试环境,发现测试环境已经出现该BUG,后台异常也一致。再将上一步增加的jar包脚本去掉,重新启动环境,发现异常不存在。

原创粉丝点击