Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Spring引导部署到Tomcat_Java_Spring_Tomcat_War_Spring Boot - Fatal编程技术网

Java 将Spring引导部署到Tomcat

Java 将Spring引导部署到Tomcat,java,spring,tomcat,war,spring-boot,Java,Spring,Tomcat,War,Spring Boot,所以我对Spring还不熟悉,所以我想试试Spring Boot 我正在使用Maven构建—我设置了一个视图请求,当我以“App”的形式运行它时,它看起来像是启动了tomcat本身,我在默认的8080端口上有一个服务,所以当我调用localhost:8080/service时,一切都很好 但是,当我试图将其打包为WAR部署到服务器时,它不起作用 因此,我想我会回到基础,在本地将它部署到我的tomcat服务器上,看看会发生什么 所以首先什么也没发生-404-在Google上搜索了一下,发现我需要像

所以我对Spring还不熟悉,所以我想试试Spring Boot

我正在使用Maven构建—我设置了一个视图请求,当我以“App”的形式运行它时,它看起来像是启动了tomcat本身,我在默认的8080端口上有一个服务,所以当我调用
localhost:8080/service
时,一切都很好

但是,当我试图将其打包为WAR部署到服务器时,它不起作用

因此,我想我会回到基础,在本地将它部署到我的tomcat服务器上,看看会发生什么

所以首先什么也没发生-404-在Google上搜索了一下,发现我需要像这样包含一个web入口点-这是我的主要课程

@ComponentScan
@EnableAutoConfiguration
public class App extends SpringBootServletInitializer
{

    public static void main( String[] args )    {
        SpringApplication.run(App.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(appClass);
    }

    private static Class<App> appClass = App.class;
}

当我们选择弹簧靴时,我们不想制造战争。从:

编辑: 因此,如果目的是“尝试Spring引导”,我建议不要生成WAR文件

如果您确实需要生成WAR文件(让您的代码针对SpringBoot构建,并生成一个可以在任何标准servlet容器中运行的文件…),那么您应该阅读文档

您是否在构建过程中包括SpringBootMaven插件?您没有描述此步骤…

Spring Boot参考文档中的章节说明:

要构建可执行且可部署到外部容器中的war文件,您需要将嵌入式容器依赖项标记为“已提供”,例如:


战争
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧启动机tomcat
假如

下面的代码适用于没有tomcat依赖关系的tomcat8部署

@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
public class ManufacturingRegionApplication extends SpringBootServletInitializer {

public static void main(String[] args) {
    new SpringApplicationBuilder(ManufacturingRegionApplication.class).application().run(args);
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) {
    return applicationBuilder.sources(application);
}

private static Class<ManufacturingRegionApplication> application = ManufacturingRegionApplication.class;


您是否运行了“mvn包”来创建.war?另外,在您的
pom.xml
中,您是否将
spring boot starter tomcat
标记为提供的
?看看这个。一般来说,Tomcat会在你的应用程序URL前面加上
appname/
。应用程序的Tomcat名称是什么?您是否遵循了Spring.io上的指南,该指南描述了如何将应用程序打包为WAR并部署到Tomcat@你能准确地解释一下你是如何解决这个问题的吗?因为我有同样的。提前感谢您我以前遇到过这种情况,可以确认接受的解决方案有效。我也没有遇到过使用Gradle的情况,所以另一种方法可能是使用Gradle代替Maven。如果你能发布一个相关的例子来说明如何做到这一点,这会有所帮助properly@staticx可以在Spring的网站上找到:。但McCooice确实比杰姆斯更好地回答了这个问题,在我看来,没有人认为这个问题是奇怪的。Spring引导的全部要点是运行一个简单的jar文件。仅当您使用像tomcat这样的Javaservlet容器时,才会生成war文件。有关这方面的更好信息,请查看:此评论不回答问题。评论通常回答问题吗?此“答案”仅提供作者对OP目标是否合理的意见。我相信在
mvn包
最终生成可部署到tomcat的
.war
之前,我必须清理
mvn
,同时应用此解决方案(它最终起作用)。将.war化为spring boot应用程序的步骤摘要:(1)
war
,上述依赖项在
pom.xml
中带有“provided”(提供),(2)通过
修改
Application.java
,使用
@覆盖扩展了SpringBootServletilizer
,如问题所述。通过
java-jar
生成
.war
可运行,并可使用spring boot 1.3.1部署到tomcat 7.0.59和jetty 9.3.6。注意
spring boot maven插件
构建插件应调用目标
重新打包
Spring Boot makes it easy to create stand-alone [...] 
Applications that can you can "just run".
Embed Tomcat or Jetty directly (no need to deploy WAR files)
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
public class ManufacturingRegionApplication extends SpringBootServletInitializer {

public static void main(String[] args) {
    new SpringApplicationBuilder(ManufacturingRegionApplication.class).application().run(args);
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) {
    return applicationBuilder.sources(application);
}

private static Class<ManufacturingRegionApplication> application = ManufacturingRegionApplication.class;
   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
 @RestController
 @RequestMapping(value = "/manufacturing-region-service")
 public class ManufacturingRegionService {

@Resource
private ManufacturingRegionDao manufacturingRegionDao;

@ResponseBody
@Transactional(readOnly = true)
@RequestMapping(value = "/region-codes/{abbr}", method = GET, produces = "application/json")