Orbeon Xforms 错误 损坏管道 oxf:/config/prologue-servlet.xpl 异常:java.io.IOException

Orbeon Xforms 错误 损坏管道 oxf:/config/prologue-servlet.xpl 异常:java.io.IOException

我对 Linux 不熟悉,所以请对我宽容一点。

我已经设置了一个运行 Apache Tomcat 的 CentOS Web 服务器。该服务器托管了一个使用 Orbeon Xforms 的 ART-DECOR webapp。

当我使用 Web 应用程序时收到一个错误,该错误在 WebApp 日志文件中留下了堆栈跟踪,如下所示。

我确信正是这个异常是由 Orbeon 引起的,并导致了这个问题。

据我所知,这是应用程序无法在服务器端读取 XML 文件的问题,因为在抛出时我无法从浏览器控制台看到任何 Web 调用。该文件似乎已就位,因此如果我的假设正确,我确信这将是一个权限问题,但我对 Tomcat 了解不够,不知道相对路径是否得到正确解析。

[root@localhost config]# pwd
/usr/share/tomcat/webapps/art-decor/WEB-INF/resources/config
[root@localhost config]# ls
feedback.xhtml                 prologue-servlet.xpl                theme
form-builder-permissions.xml   properties-local-dev.xml.template   theme-error.xsl
log4j.xml                      properties-local-prod.xml.template  theme-examples.xsl
not-found.xhtml                properties-local.xml                theme-main-art-decor.xsl
processors-local.xml.template  properties-local.xml.template       theme-plain.xsl
prologue-portlet.xpl           README.txt                          unauthorized.xhtml
[root@localhost config]# 

The error from the log file is below....

2018-12-29 13:26:54,763 ERROR ProcessorService  - 
+----------------------------------------------------------------------------------------------------------------------+
|An Error has Occurred                                                                                                 |
|----------------------------------------------------------------------------------------------------------------------|
|Broken pipe                                                                                                           |
|----------------------------------------------------------------------------------------------------------------------|
|Application Call Stack                                                                                                |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/config/prologue-servlet.xpl                                                  |executing processor           |  41|
|······················································································································|
|element=<p:processor name="oxf:page-flow">[...]</p:processor>                                                         |
|name   ={http://www.orbeon.com/oxf/processors}page-flow                                                               |
|----------------------------------------------------------------------------------------------------------------------|
|----------------------------------------------------------------------------------------------------------------------|
|Exception: java.io.IOException                                                                                        |
|----------------------------------------------------------------------------------------------------------------------|
|sun.nio.ch.FileDispatcherImpl                      |write0                        |FileDispatcherImpl.java       |    |
|sun.nio.ch.SocketDispatcher                        |write                         |SocketDispatcher.java         |  47|
|sun.nio.ch.IOUtil                                  |writeFromNativeBuffer         |IOUtil.java                   |  93|
|sun.nio.ch.IOUtil                                  |write                         |IOUtil.java                   |  65|
|sun.nio.ch.SocketChannelImpl                       |write                         |SocketChannelImpl.java        | 471|
|org.apache.tomcat.util.net.NioChannel              |write                         |NioChannel.java               | 134|
|org.apache.tomcat.util.net.NioBlockingSelector     |write                         |NioBlockingSelector.java      | 101|
|org.apache.tomcat.util.net.NioSelectorPool         |write                         |NioSelectorPool.java          | 144|
|apache.tomcat.util.net.NioEndpoint$NioSocketWrapper|doWrite                       |NioEndpoint.java              |1225|
|org.apache.tomcat.util.net.SocketWrapperBase       |doWrite                       |SocketWrapperBase.java        | 743|
|org.apache.tomcat.util.net.SocketWrapperBase       |writeBlocking                 |SocketWrapperBase.java        | 513|
|org.apache.tomcat.util.net.SocketWrapperBase       |write                         |SocketWrapperBase.java        | 451|
|coyote.http11.Http11OutputBuffer$SocketOutputBuffer|doWrite                       |Http11OutputBuffer.java       | 530|
|rg.apache.coyote.http11.filters.ChunkedOutputFilter|doWrite                       |ChunkedOutputFilter.java      | 112|
|org.apache.coyote.http11.Http11OutputBuffer        |doWrite                       |Http11OutputBuffer.java       | 189|
|org.apache.coyote.Response                         |doWrite                       |Response.java                 | 599|
|org.apache.catalina.connector.OutputBuffer         |realWriteBytes                |OutputBuffer.java             | 328|
|----------------------------------------------------------------------------------------------------------------------|
|Exception: org.apache.catalina.connector.ClientAbortException                                                         |
|----------------------------------------------------------------------------------------------------------------------|
|org.apache.catalina.connector.OutputBuffer         |realWriteBytes                |OutputBuffer.java             | 333|
|org.apache.catalina.connector.OutputBuffer         |appendByteArray               |OutputBuffer.java             | 728|
|org.apache.catalina.connector.OutputBuffer         |append                        |OutputBuffer.java             | 657|
|org.apache.catalina.connector.OutputBuffer         |writeBytes                    |OutputBuffer.java             | 368|
|org.apache.catalina.connector.OutputBuffer         |write                         |OutputBuffer.java             | 346|
|org.apache.catalina.connector.CoyoteOutputStream   |write                         |CoyoteOutputStream.java       |  96|
|org.orbeon.oxf.util.NetUtils                       |copyStream                    |NetUtils.java                 | 235|
|org.orbeon.oxf.processor.ResourceServer            |serveResource                 |ResourceServer.java           | 128|
|xf.controller.PageFlowControllerProcessor$FileRoute|process                       |PageFlowControllerProcessor.sc| 453|
|g.orbeon.oxf.controller.PageFlowControllerProcessor|start                         |PageFlowControllerProcessor.sc| 162|
|g.orbeon.oxf.processor.pipeline.PipelineProcessor$4|run                           |PipelineProcessor.java        | 618|
|----------------------------------------------------------------------------------------------------------------------|
|Exception: org.orbeon.oxf.common.ValidationException                                                                  |
|----------------------------------------------------------------------------------------------------------------------|
|org.orbeon.oxf.common.OrbeonLocationException$     |wrapException                 |OrbeonLocationException.scala |  60|
|org.orbeon.oxf.common.OrbeonLocationException      |wrapException                 |OrbeonLocationException.scala |    |
|g.orbeon.oxf.processor.pipeline.PipelineProcessor$4|run                           |PipelineProcessor.java        | 620|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|executeChildren               |PipelineProcessor.java        | 680|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|start                         |PipelineProcessor.java        | 615|
|f.processor.pipeline.choose.ConcreteChooseProcessor|start                         |ConcreteChooseProcessor.java  | 231|
|g.orbeon.oxf.processor.pipeline.PipelineProcessor$4|run                           |PipelineProcessor.java        | 618|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|executeChildren               |PipelineProcessor.java        | 680|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|start                         |PipelineProcessor.java        | 615|
|org.orbeon.oxf.pipeline.InitUtils$                 |runProcessor                  |InitUtils.scala               |  82|
|org.orbeon.oxf.webapp.ProcessorService             |service                       |ProcessorService.scala        |  40|
|nServlet$$anonfun$service$1$$anonfun$apply$mcV$sp$1|apply$mcV$sp                  |OrbeonServlet.scala           |  79|
|nServlet$$anonfun$service$1$$anonfun$apply$mcV$sp$1|apply                         |OrbeonServlet.scala           |  72|
|nServlet$$anonfun$service$1$$anonfun$apply$mcV$sp$1|apply                         |OrbeonServlet.scala           |  72|
|org.orbeon.oxf.util.ScalaUtils$                    |withRootException             |ScalaUtils.scala              |  83|
|orbeon.oxf.servlet.OrbeonServlet$$anonfun$service$1|apply$mcV$sp                  |OrbeonServlet.scala           |  72|
|orbeon.oxf.servlet.OrbeonServlet$$anonfun$service$1|apply                         |OrbeonServlet.scala           |  72|
|orbeon.oxf.servlet.OrbeonServlet$$anonfun$service$1|apply                         |OrbeonServlet.scala           |  72|
|org.orbeon.oxf.util.DynamicVariable                |withValue                     |DynamicVariable.scala         |  42|
|org.orbeon.oxf.servlet.OrbeonServlet               |service                       |OrbeonServlet.scala           |  71|
|javax.servlet.http.HttpServlet                     |service                       |HttpServlet.java              | 741|
|org.apache.catalina.core.ApplicationFilterChain    |internalDoFilter              |ApplicationFilterChain.java   | 231|
|org.apache.catalina.core.ApplicationFilterChain    |doFilter                      |ApplicationFilterChain.java   | 166|
|org.apache.tomcat.websocket.server.WsFilter        |doFilter                      |WsFilter.java                 |  53|
|org.apache.catalina.core.ApplicationFilterChain    |internalDoFilter              |ApplicationFilterChain.java   | 193|
|org.apache.catalina.core.ApplicationFilterChain    |doFilter                      |ApplicationFilterChain.java   | 166|
|org.apache.catalina.core.StandardWrapperValve      |invoke                        |StandardWrapperValve.java     | 199|
|org.apache.catalina.core.StandardContextValve      |invoke                        |StandardContextValve.java     |  96|
|org.apache.catalina.authenticator.AuthenticatorBase|invoke                        |AuthenticatorBase.java        | 490|
|org.apache.catalina.core.StandardHostValve         |invoke                        |StandardHostValve.java        | 139|
|org.apache.catalina.valves.ErrorReportValve        |invoke                        |ErrorReportValve.java         |  92|
|org.apache.catalina.valves.AbstractAccessLogValve  |invoke                        |AbstractAccessLogValve.java   | 668|
|org.apache.catalina.core.StandardEngineValve       |invoke                        |StandardEngineValve.java      |  74|
|org.apache.catalina.connector.CoyoteAdapter        |service                       |CoyoteAdapter.java            | 343|
|org.apache.coyote.http11.Http11Processor           |service                       |Http11Processor.java          | 408|
|org.apache.coyote.AbstractProcessorLight           |process                       |AbstractProcessorLight.java   |  66|
|rg.apache.coyote.AbstractProtocol$ConnectionHandler|process                       |AbstractProtocol.java         | 834|
|.apache.tomcat.util.net.NioEndpoint$SocketProcessor|doRun                         |NioEndpoint.java              |1417|
|org.apache.tomcat.util.net.SocketProcessorBase     |run                           |SocketProcessorBase.java      |  49|
|java.util.concurrent.ThreadPoolExecutor            |runWorker                     |ThreadPoolExecutor.java       |1149|
|java.util.concurrent.ThreadPoolExecutor$Worker     |run                           |ThreadPoolExecutor.java       | 624|
|che.tomcat.util.threads.TaskThread$WrappingRunnable|run                           |TaskThread.java               |  61|
|java.lang.Thread                                   |run                           |Thread.java                   | 748|
+----------------------------------------------------------------------------------------------------------------------+

答案1

经过大量挖掘和调试记录,似乎 ART-DECOR 和 Orbeon 存在问题。我降级到 Orbeon 3.9,这违反了 ART-DECOR 网站上的说明。

当 ART-DECOR 网络应用程序放入 DEBUG 日志时,我发现以下异常......

2018-12-31 11:31:24,858 ERROR XFormsServer  - xforms-submit-error - setting throwable {throwable: "
2018-12-31 11:31:24,858 ERROR XFormsServer  -     +----------------------------------------------------------------------------------------------------------------------+
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |An Error has Occurred                                                                                                 |
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |----------------------------------------------------------------------------------------------------------------------|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |xf:submission for submission id: get-ada-apps-list-submission, error code received when submitting instance: 400      |
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |----------------------------------------------------------------------------------------------------------------------|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |Application Call Stack                                                                                                |
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |----------------------------------------------------------------------------------------------------------------------|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |----------------------------------------------------------------------------------------------------------------------|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |Exception: org.orbeon.oxf.xforms.submission.XFormsSubmissionException                                                 |
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |----------------------------------------------------------------------------------------------------------------------|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |.orbeon.oxf.xforms.submission.XFormsModelSubmission|getReplacer                   |XFormsModelSubmission.java    | 729|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |rg.orbeon.oxf.xforms.submission.RegularSubmission$1|call                          |RegularSubmission.java        | 108|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |rg.orbeon.oxf.xforms.submission.RegularSubmission$1|call                          |RegularSubmission.java        |  78|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |f.xforms.submission.AsynchronousSubmissionManager$1|call                          |AsynchronousSubmissionManager.| 110|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |f.xforms.submission.AsynchronousSubmissionManager$1|call                          |AsynchronousSubmissionManager.|  92|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |java.util.concurrent.FutureTask                    |run                           |FutureTask.java               | 266|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |java.util.concurrent.Executors$RunnableAdapter     |call                          |Executors.java                | 511|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |java.util.concurrent.FutureTask                    |run                           |FutureTask.java               | 266|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |java.util.concurrent.ThreadPoolExecutor            |runWorker                     |ThreadPoolExecutor.java       |1149|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |java.util.concurrent.ThreadPoolExecutor$Worker     |run                           |ThreadPoolExecutor.java       | 624|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     |java.lang.Thread                                   |run                           |Thread.java                   | 748|
2018-12-31 11:31:24,858 ERROR XFormsServer  -     +----------------------------------------------------------------------------------------------------------------------+"}

... 这让我想到了以下 Orbeon 帖子来提供答案... Orbeon 论坛

相关内容