Skip to content

Cannot deploy war file to Tomcat with mybatis-spring-boot on 3.0.0-SNAPSHOT #33325

Closed as not planned
@kazuki43zoo

Description

@kazuki43zoo

When use the latest Spring Boot 3.0.0-SNAPSHOT together with mybatis-spring-boot 3.x(under development), we cannot deploy war file to the Tomcat 10. Until Spring Boot 3.0.0-RC2 it work fine.

Logs

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v3.0.0-SNAPSHOT)

2022-11-23T16:21:30.291+09:00  INFO 71116 --- [           main] s.mybatis.war.SampleWebApplication       : Starting SampleWebApplication using Java 17.0.1 with PID 71116 (/Users/shimizukazuki/git-me/spring-boot-starter/mybatis-spring-boot-samples/mybatis-spring-boot-sample-war/target/cargo/configurations/tomcat10x/webapps/mybatis-spring-boot-sample-war/WEB-INF/classes started by shimizukazuki in /Users/shimizukazuki/git-me/spring-boot-starter/mybatis-spring-boot-samples/mybatis-spring-boot-sample-war/target/cargo/configurations/tomcat10x)
2022-11-23T16:21:30.296+09:00  INFO 71116 --- [           main] s.mybatis.war.SampleWebApplication       : No active profile set, falling back to 1 default profile: "default"
2022-11-23T16:21:32.309+09:00  INFO 71116 --- [           main] .C.[.[.[/mybatis-spring-boot-sample-war] : Initializing Spring embedded WebApplicationContext
11月 23, 2022 4:21:32 午後 org.apache.catalina.core.ApplicationContext log
情報: Initializing Spring embedded WebApplicationContext
2022-11-23T16:21:32.313+09:00  INFO 71116 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1940 ms
2022-11-23T16:21:32.785+09:00  INFO 71116 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2022-11-23T16:21:33.322+09:00  INFO 71116 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:ff60724f-b1e3-44a5-a108-6e4484a3d63b user=SA
2022-11-23T16:21:33.326+09:00  INFO 71116 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2022-11-23T16:21:33.463+09:00  WARN 71116 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cityRestController' defined in file [/Users/shimizukazuki/git-me/spring-boot-starter/mybatis-spring-boot-samples/mybatis-spring-boot-sample-war/target/cargo/configurations/tomcat10x/webapps/mybatis-spring-boot-sample-war/WEB-INF/classes/sample/mybatis/war/controller/CityRestController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'cityMapper' defined in file [/Users/shimizukazuki/git-me/spring-boot-starter/mybatis-spring-boot-samples/mybatis-spring-boot-sample-war/target/cargo/configurations/tomcat10x/webapps/mybatis-spring-boot-sample-war/WEB-INF/classes/sample/mybatis/war/mapper/CityMapper.class]: Cannot resolve reference to bean 'sqlSessionTemplate' while setting bean property 'sqlSessionTemplate'
2022-11-23T16:21:33.464+09:00  INFO 71116 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2022-11-23T16:21:33.467+09:00  INFO 71116 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2022-11-23T16:21:33.484+09:00  INFO 71116 --- [           main] .s.b.a.l.ConditionEvaluationReportLogger : 

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2022-11-23T16:21:33.548+09:00 ERROR 71116 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'mybatis.configuration.environment' to org.apache.ibatis.mapping.Environment:

    Reason: java.lang.IllegalStateException: Failed to extract parameter names for public org.apache.ibatis.mapping.Environment(java.lang.String,org.apache.ibatis.transaction.TransactionFactory,javax.sql.DataSource)

Action:

Update your application's configuration
...
Caused by: org.springframework.boot.context.properties.ConfigurationPropertiesBindException: Error creating bean with name 'mybatis-org.mybatis.spring.boot.autoconfigure.MybatisProperties': Could not bind properties to 'MybatisProperties' : prefix=mybatis, ignoreInvalidFields=false, ignoreUnknownFields=true
	at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.bind(ConfigurationPropertiesBindingPostProcessor.java:92)
	at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:78)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:420)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1743)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1405)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1325)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:880)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:784)
	... 93 more
Caused by: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'mybatis.configuration.environment' to org.apache.ibatis.mapping.Environment
	at org.springframework.boot.context.properties.bind.Binder.handleBindError(Binder.java:387)
	at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:347)
	at org.springframework.boot.context.properties.bind.Binder.lambda$bindDataObject$4(Binder.java:472)
	at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:98)
	at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:86)
	at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:62)
	at org.springframework.boot.context.properties.bind.Binder.lambda$bindDataObject$5(Binder.java:476)
	at org.springframework.boot.context.properties.bind.Binder$Context.withIncreasedDepth(Binder.java:590)
	at org.springframework.boot.context.properties.bind.Binder$Context.withDataObject(Binder.java:576)
	at org.springframework.boot.context.properties.bind.Binder.bindDataObject(Binder.java:474)
	at org.springframework.boot.context.properties.bind.Binder.bindObject(Binder.java:414)
	at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:343)
	at org.springframework.boot.context.properties.bind.Binder.lambda$bindDataObject$4(Binder.java:472)
	at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:98)
	at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:86)
	at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:62)
	at org.springframework.boot.context.properties.bind.Binder.lambda$bindDataObject$5(Binder.java:476)
	at org.springframework.boot.context.properties.bind.Binder$Context.withIncreasedDepth(Binder.java:590)
	at org.springframework.boot.context.properties.bind.Binder$Context.withDataObject(Binder.java:576)
	at org.springframework.boot.context.properties.bind.Binder.bindDataObject(Binder.java:474)
	at org.springframework.boot.context.properties.bind.Binder.bindObject(Binder.java:414)
	at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:343)
	at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:332)
	at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:262)
	at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:249)
	at org.springframework.boot.context.properties.ConfigurationPropertiesBinder.bind(ConfigurationPropertiesBinder.java:94)
	at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.bind(ConfigurationPropertiesBindingPostProcessor.java:89)
	... 107 more
Caused by: java.lang.IllegalStateException: Failed to extract parameter names for public org.apache.ibatis.mapping.Environment(java.lang.String,org.apache.ibatis.transaction.TransactionFactory,javax.sql.DataSource)
	at org.springframework.util.Assert.state(Assert.java:97)
	at org.springframework.boot.context.properties.bind.ValueObjectBinder$DefaultValueObject.parseConstructorParameters(ValueObjectBinder.java:270)
	at org.springframework.boot.context.properties.bind.ValueObjectBinder$DefaultValueObject.<init>(ValueObjectBinder.java:264)
	at org.springframework.boot.context.properties.bind.ValueObjectBinder$DefaultValueObject.get(ValueObjectBinder.java:291)
	at org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject.get(ValueObjectBinder.java:198)
	at org.springframework.boot.context.properties.bind.ValueObjectBinder.bind(ValueObjectBinder.java:67)
	at org.springframework.boot.context.properties.bind.Binder.lambda$bindDataObject$5(Binder.java:476)
	at org.springframework.boot.context.properties.bind.Binder$Context.withIncreasedDepth(Binder.java:590)
	at org.springframework.boot.context.properties.bind.Binder$Context.withDataObject(Binder.java:576)
	at org.springframework.boot.context.properties.bind.Binder.bindDataObject(Binder.java:474)
	at org.springframework.boot.context.properties.bind.Binder.bindObject(Binder.java:414)
	at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:343)
	... 132 more

Reproduce

Start the Tomcat server using argo plugin:

./mvnw clean package cargo:run -Dmaven.test.skip -Denforcer.skip=true -pl mybatis-spring-boot-samples/mybatis-spring-boot-sample-war

Access to API:

curl http://localhost:18080/mybatis-spring-boot-sample-war/cities/CA -D -
HTTP/1.1 404 
Content-Type: text/html;charset=utf-8
Content-Language: ja
Content-Length: 809
Date: Wed, 23 Nov 2022 07:32:51 GMT

<!doctype html><html lang="ja"><head><title>HTTPステータス 404 – 見つかりません。</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {fo} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTPステータス 404 – 見つかりません。</h1><hr class="lタイプ</b> ステータスレポート</p><p><b>説明</b> オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。</p><hr class="line" /><h3>Apache Tomcat

View container log file:

cat mybatis-spring-boot-samples/mybatis-spring-boot-sample-war/target/cargo/container.log

Downgrade to Spring Boot 3.0.0-RC2

Edit pom.xml stored the root directory as follow:

-    <spring-boot.version>3.0.0-SNAPSHOT</spring-boot.version>
+    <spring-boot.version>3.0.0-RC2</spring-boot.version>

Start the Tomcat server using argo plugin:

./mvnw clean package cargo:run -Dmaven.test.skip -Denforcer.skip=true -pl mybatis-spring-boot-samples/mybatis-spring-boot-sample-war

Access to API:

curl http://localhost:18080/mybatis-spring-boot-sample-war/cities/CA -D -
HTTP/1.1 200 
Content-Type: application/json
Transfer-Encoding: chunked
Date: Wed, 23 Nov 2022 07:34:53 GMT

{"id":1,"name":"San Francisco","state":"CA","country":"US"}

Related issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: declinedA suggestion or change that we don't feel we should currently apply

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions