Attachments are not available with ClassNotFoundException or 404 in the UI after upgrading to 8.15.0 or newer

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Fisheye および Crucible は除く

問題

After upgrading to Jira 8.15.0 or later, issue attachments and thumbnails are no longer accessible and opening them results in a dead link 404 and/or 500 error message.

atlassian-jira.log: に次のメッセージが出力される。

2021-02-11 15:43:26,634-0600 http-1 ERROR [o.a.c.c.C.[.[x].[x].[viewattachment]] Allocate exception for servlet [viewattachment]
java.lang.ClassNotFoundException: com.atlassian.jira.web.servlet.ViewAttachmentServlet
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1358)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180)
	at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:545)
	at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:526)
	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
	... 16 filtered
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)
2021-02-11 15:43:26,637-0600 http-1 ERROR /internal-error [c.a.j.web.servlet.InternalServerErrorServlet] {errorId=x, interpretedMsg=, cause=java.lang.ClassNotFoundException: com.atlassian.jira.web.servlet.ViewAttachmentServlet, stacktrace=java.lang.ClassNotFoundException: com.atlassian.jira.web.servlet.ViewAttachmentServlet
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1358) [catalina.jar:8.5.60]
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180) [catalina.jar:8.5.60]
    	at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:545) [catalina.jar:8.5.60]
    	at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:526) [catalina.jar:8.5.60]
    	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150) [catalina.jar:8.5.60]
    	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1044) [catalina.jar:8.5.60]
    	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:763) [catalina.jar:8.5.60]
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134) [catalina.jar:8.5.60]
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [catalina.jar:8.5.60]
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544) [catalina.jar:8.5.60]
    	at org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:206) [catalina.jar:8.5.60]
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) [catalina.jar:8.5.60]
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [catalina.jar:8.5.60]
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [catalina.jar:8.5.60]
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690) [catalina.jar:8.5.60]
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:8.5.60]
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616) [tomcat-coyote.jar:8.5.60]
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-coyote.jar:8.5.60]
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831) [tomcat-coyote.jar:8.5.60]
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1634) [tomcat-coyote.jar:8.5.60]
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:8.5.60]
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_162]
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_162]
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.5.60]
    	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162]
    , referer=x, servletErrorMessage=}

診断

環境

  • You are using a modified <jira-install>/atlassian-jira/WEB-INF/web.xml file.

Diagnostic Steps

  • The attachment path is correct in the startup log or by viewing the ⚙️ → System → Attachments page.

  • The attachment files are available and accessible by the Jira user in the above directory.

原因

In Jira 8.15.0, several class files were migrated to a new package:

  • Previous directory: <jira-install>\atlassian-jira\WEB-INF\classes\com\atlassian\jira\web\servlet\
  • New directory: <jira-install>\atlassian-jira\WEB-INF\classes\com\atlassian\jira\web\servlet\viewfile


ここをクリックして展開...
  1. AbstractViewFileServlet$JwtAttachmentPermissionException.class
  2. AbstractViewFileServlet.class
  3. RangeRequest.class
  4. RangeResponse.class
  5. ViewAttachmentServlet.class
  6. ViewTemporaryAttachmentServlet$ParsedQuery.class
  7. ViewTemporaryAttachmentServlet.class
  8. ViewThumbnailServlet.class

This change was implemented as a fix for  JRASERVER-41675 - Getting issue details... STATUS  and you can read more about this in the Jira Software 8.15.x upgrade notes.

回避策

When upgrading, make sure to use the new web.xml file and copy your custom modifications to it rather then using the old file. Otherwise, Jira will look for old servlets and attachments won't be displayed. The changes for attachments specifically are outlined below:

web.xml
    <servlet>
        <servlet-name>viewattachment</servlet-name>
        <servlet-class>com.atlassian.jira.web.servlet.viewfile.ViewAttachmentServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>viewtemporaryattachment</servlet-name>
        <servlet-class>com.atlassian.jira.web.servlet.viewfile.ViewTemporaryAttachmentServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>viewthumbnail</servlet-name>
        <servlet-class>com.atlassian.jira.web.servlet.viewfile.ViewThumbnailServlet</servlet-class>
    </servlet>

After changing the web.xml on each Jira node, you may restart one-at-a-time so they pick up the change (no need to bring the whole cluster down at the same time).


説明 Attachments are not available after upgrading to 8.15.0
製品Jira Core, Jira Software, Jira Service Desk

最終更新日 2022 年 8 月 11 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.