【问题标题】:SDL Tridion 2012 UI - Error when updating preview and publishingSDL Tridion 2012 UI - 更新预览和发布时出错
【发布时间】:2012-08-07 15:59:19
【问题描述】:

我正在 Tomcat 上安装 cd_preview_webservice,它还安装了用于登台网站(用于 UI)和 cd_upload(部署到网站)的应用程序。

当我点击“更新预览”或“完成编辑”时,我收到以下错误:

com/tridion/deployer/TCDLTransformer

这也将 tomcat 进程发送到 100% 的 CPU 使用率。

我已重新阅读说明,但我看不出我在哪里犯了错误。非常感谢任何帮助。

谢谢 标记

我做了更多的挖掘工作,看起来我在“PREVIEW_SESSIONS”表中的数据库中保存了一个会话预览 ID,但其他的都是空的。我觉得很奇怪。

我还发现以下 Web 服务调用 'http://bbtrid04/WebUI/Models/SiteEdit/Services/Services.svc/GetPreviewToken' 收到以下响应:

{"ExceptionDetail":null,"ExceptionType":null,"Message":"PermGen space","StackTrace":null}

并且本地主机日志文件包含以下错误:

07-Aug-2012 17:34:04 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet httpupload threw exception
java.lang.OutOfMemoryError: PermGen space
    at org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:199)
    at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:361)
    at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
    at com.tridion.transport.HTTPSReceiverServlet.handleUpload(HTTPSReceiverServlet.java:233)
    at com.tridion.transport.HTTPSReceiverServlet.doPost(HTTPSReceiverServlet.java:108)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)
07-Aug-2012 17:34:05 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet httpupload threw exception
java.lang.VerifyError: (class: org/apache/commons/fileupload/disk/DiskFileItem, method: getUniqueId signature: ()Ljava/lang/String;) Illegal constant pool index
    at org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:199)
    at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:361)
    at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
    at com.tridion.transport.HTTPSReceiverServlet.handleUpload(HTTPSReceiverServlet.java:233)
    at com.tridion.transport.HTTPSReceiverServlet.doPost(HTTPSReceiverServlet.java:108)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)

【问题讨论】:

  • 嘿,马克。您可以再次检查该错误消息吗?现在它只显示一个类名,这对我来说听起来异常不完整。
  • 当然会现在检查。我也被错误信息弄糊涂了。
  • 嗯,这就是它所说的最有可能是“类加载问题”的全部内容。不幸的是,这是我所能做的最模糊的,所以我希望在这种情况下其他人会有更好的线索。
  • 嗨弗兰克。谢谢你的帮助。我做了更多的挖掘工作,并找到了更多的线索。有任何想法吗?标记

标签: tridion tridion-2011


【解决方案1】:

当 JVM 加载类时,它会将它们放入其堆的 PermGen 空间,默认为 64MB。

您显示的堆栈跟踪完全表明您的 JVM 加载的类超出了它的空间,并且肯定会解释它对找不到 TCDLTransformer 的抱怨。

我的setenv.bat 中通常有一个-XX:MaxPermSize=256m,以确保有足够的空间。根据您启动 Tomcat 的方式,您可能需要将其放在那里或放在服务运行程序参数中。

【讨论】:

  • 增加 MaxPermSize 的大小确实从日志中删除了错误。不幸的是,同样的错误仍然存​​在于 UI 中。更新预览或完成编辑时,请求以下内容时出现以下错误:请求:bbtrid04/WebUI/Models/SiteEdit/Services/Services.svc/... 响应:{"ExceptionDetail":null,"ExceptionType":null, "Message":"com\/tridion\/deployer\/‌​TCDLTransformer","StackTrace":null}
  • 我还发现我必须将以下 jar 从 cd_upload 应用程序放入 cd_preview_webservice 应用程序:cd_deployer.jar、cd_upload.jar、commons-fileupload.jar、commons-io.jar。这消除了 TCDLDeployer 错误。
猜你喜欢
  • 2012-06-03
  • 2012-07-06
  • 1970-01-01
  • 2012-07-01
  • 2012-03-19
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
相关资源
最近更新 更多