【问题标题】:How to build a WAR file to deploy on Tomcat from a JHipster Spring Boot project?如何从 JHipster Spring Boot 项目构建 WAR 文件以部署在 Tomcat 上?
【发布时间】:2016-06-17 10:51:47
【问题描述】:

我使用 JHipster 创建了一个项目,但对其进行了更改并添加了一些东西。当从 IDE (Intellij) 作为 Spring Boot 项目运行时,它运行正常,但是当尝试构建 WAR 并将其部署在 Tomcat 7 上时,它会失败并显示以下堆栈跟踪:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [org/springframework/boot/autoconfigure/transaction/jta/JndiJtaConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No JTA UserTransaction available - specify either 'userTransaction' or 'userTransactionName' or 'transactionManager' or 'transactionManagerName'
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:543)
        ... 41 more
Caused by: java.lang.IllegalStateException: No JTA UserTransaction available - specify either 'userTransaction' or 'userTransactionName' or 'transactionManager' or 'transactionManagerName'
        at org.springframework.transaction.jta.JtaTransactionManager.checkUserTransactionAndTransactionManager(JtaTransactionManager.java:494)
        at org.springframework.transaction.jta.JtaTransactionManager.afterPropertiesSet(JtaTransactionManager.java:436)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
        ... 51 more

我也试过了:

mvn -Pprod 清理包

但这也失败了:

Running "karma:unit" (karma) task
INFO [karma]: Karma v0.12.35 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.8 (Windows 7 0.0.0)]: Connected on socket gsod2iXnNubgdt_gVHUZ with id 68003640
PhantomJS 1.9.8 (Windows 7 0.0.0) ERROR
  ReferenceError: Can't find variable: google
  at C:/Dev/workspaces/myProject/src/main/webapp/scripts/components/view/geoChart.directive.js:9
PhantomJS 1.9.8 (Windows 7 0.0.0) ERROR
  ReferenceError: Can't find variable: google
  at C:/Dev/workspaces/myProject/src/main/webapp/scripts/components/view/geoChart.directive.js:9

PhantomJS 1.9.8 (Windows 7 0.0.0): Executed 0 of 0 ERROR (1.301 secs / 0 secs)

Warning: Task "karma:unit" failed. Use --force to continue.

Aborted due to warnings.

我添加了 Google GeoChart,这似乎会导致问题。

我想要的是一个可以部署在Tomcat上的经典WAR,但我显然做错了什么,我不知道是什么。

谢谢。

【问题讨论】:

    标签: maven tomcat spring-boot jhipster


    【解决方案1】:

    您使用的是 *.war.original 还是 *.war?

    我认为您希望在将 *.war.original 重命名为 .war 文件后将其放入 tomcat 中。

    查看文档:http://jhipster.github.io/production/

    要将应用程序打包为“生产”WAR,请键入:

    mvn -Pprod 包

    或者在使用 Gradle 时:

    gradlew -Pprod bootRepackage

    这将生成两个文件(如果您的应用程序被调用 “jhipster”):

    目标/jhipster-0.0.1-SNAPSHOT.war target/jhipster-0.0.1-SNAPSHOT.war.original 第一个是 可执行 WAR 文件(请参阅下一节以运行它)。它也可以 部署在应用服务器上,但因为它包含 Tomcat 运行时库,您可能会收到一些警告,这就是为什么我们 如果要部署,建议您使用第二个“.original”文件 应用服务器上的 JHipster。

    在应用服务器上部署 WAR 文件后:

    它将默认使用“dev”配置文件它可以在“production”中运行 模式”,如果您触发“产品”配置文件(有几种方法可以 触发 Spring 配置文件,例如您可以添加 -Dspring.profiles.active=prod 到你的 JAVA_OPTS 时运行你的服务器)

    【讨论】:

      【解决方案2】:

      还将 Karma 版本从 v0.12.35 更新为 Karma v0.13.19

      即在package.json 和朗姆酒npm install 中设置"karma": "0.13.19",。 更多信息here

      【讨论】:

        猜你喜欢
        • 2015-09-03
        • 1970-01-01
        • 2016-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-10
        • 2018-12-05
        • 2019-02-27
        相关资源
        最近更新 更多