Open jflute opened 1 month ago
commons-fileuploadもjakarta対応のバージョンを使わないといけない。
<dependency> <!-- used for multipart request -->
<groupId>org.apache.commons</groupId>
<artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
<version>${commons.fileupload.version}</version>
</dependency>
そして、HarborMultipartRequestHandlerがコンパイルエラーのオンパレード。
ServletFileUploadがいなくなってるとかどうすりゃいいのか?
fessで先立って対応しているコードを教えてもらったので参考にする。 https://github.com/codelibs/fess/commit/90d6af13850c9e58a08ac46dce01287e557248c8#diff-46ded191a59579f83512554ead4[…]fd37acde6513fcbe2e7db5a9a1421c7f](https://github.com/codelibs/fess/commit/90d6af13850c9e58a08ac46dce01287e557248c8#diff-46ded191a59579f83512554ead4b7692fd37acde6513fcbe2e7db5a9a1421c7f)
JakartaServletDiskFileUploadを使う。
変更点概要: o ServletFileUpload -> JakartaServletDiskFileUpload o SizeLimitExceededException -> FileUploadByteCountLimitException o FileItem -> DiskFileItem o DiskFileItemFactoryはbuilder()でnewする o StringのencodingがもろもろCharsetに o e.getPermittedSize() -> e.getPermitted()
一括修正:
import javax.annotation.Resource
↓
import jakarta.annotation.Resource
jtaをjakarta対応に
<dependency>
<groupId>jakarta.transaction</groupId>
<artifactId>jakarta.transaction-api</artifactId>
<version>2.0.1</version>
</dependency>
warファイル作るところ:
<artifactId>maven-dependency-plugin</artifactId>
...
<!-- servlet container libraries are located as war resource -->
<includeArtifactIds>
jakarta.servlet-api, jakarta.servlet.jsp, jakarta.servlet.jsp-api
, jetty-boot, jetty-all, javax.el, jetty-jsp, jetty-schemas, jakarta.websocket-api
, tomcat-boot, tomcat-embed-core, tomcat-embed-logging-juli
, tomcat-jasper, tomcat-jasper-el, tomcat-el-api, tomcat-jsp-api, ecj
...
<artifactId>maven-war-plugin</artifactId>
<configuration>
<!-- servlet container libraries are not in application -->
<packagingExcludes> <!-- #jakarta -->
WEB-INF/lib/jakarta.servlet-api-*.jar, WEB-INF/lib/jakarta.servlet.jsp-*.jar
, WEB-INF/lib/jetty-*.jar, WEB-INF/lib/jakarta.el-*.jar, WEB-INF/lib/jakarta.websocket-*.jar
, WEB-INF/lib/org.eclipse.jdt.core-*.jar
, WEB-INF/lib/tomcat-*.jar
</packagingExcludes>
// Japanese here
LastaFluteのjakarta対応に合わせて、jakarta21ブランチのharborを作る。