gpt4 book ai didi

java - 为什么没有找到休息终点?

转载 作者:行者123 更新时间:2023-12-02 10:47:02 27 4
gpt4 key购买 nike

我有带有 spring-boot-starter-web 和 jpa 的 spring-boot 应用程序。本地运行正常。

然后,我构建 war 文件并尝试将其部署到 websphere 上。

我的项目有以下结构:

enter image description here

当在 websphere 上部署我的应用程序后,我加载像 ip:port/test 这样的根目录 - 显示来自 index.html 的起始页面。

但是,当尝试打开我的应用程序的其余部分时 - 显示 404 错误。对于来自客户端的发送请求,我尝试使用 postman 。

SpringBoot类是:

@ComponentScan({"data"})
@EntityScan(basePackages = {"data.model"})
@EnableJpaRepositories(basePackages = {"data.persistence"})
@EnableAutoConfiguration
@SpringBootApplication
public class Application extends SpringBootServletInitializer implements WebApplicationInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

@Override
public void onStartup(ServletContext servletContext) throws ServletException {

}
}

如果没有 onstartup 方法,尝试启动时服务器上的 war 会失败。

最佳答案

这个简单的示例在 Liberty 上运行正常,如果您想将应用程序打包为 war 文件,请通过尝试运行它来验证您的设置是否正确,然后使用您需要的功能进行扩展。

@SpringBootApplication
@RestController
public class SpringBootLibertyApplication extends SpringBootServletInitializer {

//@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBootLibertyApplication.class);
}

@RequestMapping("/hello")
public String hello() {
return "Hello from Spring Boot running on Liberty!";
}

}

更新

下面是我使用的pom.xml。这不是最简单的,因为此外,您还配置了 Liberty 插件,它根据您的 server.xml 文件创建一个服务器,并将最终服务器打包为 jar 文件。我这样做是为了我自己的测试,所以你可以在 pom 中注释掉它。我没有任何 web.xml

正如其他人已经评论的那样,您设置中的主要问题是您的 Application 类不在包的根目录,这会混淆所有 Spring 自动配置功能。因此,将您的 springboot.config.Application 移动到 data.Application

pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>gas.tests</groupId>
<artifactId>liberty.springboot</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<!-- contains default pluginManagement configuration for liberty-maven-plugin -->
<parent>
<groupId>net.wasdev.wlp.maven.parent</groupId>
<artifactId>liberty-maven-app-parent</artifactId>
<version>2.1.2</version>
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>

<app.name>LibertySpringBoot</app.name>
<testServerHttpPort>9080</testServerHttpPort>
<testServerHttpsPort>9443</testServerHttpsPort>
<warContext>${app.name}</warContext>
<package.file>${project.build.directory}/${project.artifactId}-${project.version}.zip</package.file>
<packaging.type>usr</packaging.type>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-client</artifactId>
<version>3.1.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.wasdev.maven.tools.targets</groupId>
<artifactId>liberty-target</artifactId>
<version>18.0.0.2</version>
<scope>provided</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.3.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<packagingExcludes>pom.xml</packagingExcludes>
</configuration>
</plugin>
<!-- Plugin to run unit tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<phase>test</phase>
<id>default-test</id>
<configuration>
<excludes>
<exclude>**/it/**</exclude>
</excludes>
<reportsDirectory>${project.build.directory}/test-reports/unit</reportsDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- Enable liberty-maven plugin -->
<plugin>
<groupId>net.wasdev.wlp.maven.plugins</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<configuration>
<assemblyArtifact>
<groupId>com.ibm.websphere.appserver.runtime</groupId>
<artifactId>wlp-webProfile7</artifactId>
<version>18.0.0.2</version>
<type>zip</type>
</assemblyArtifact>
<configFile>${basedir}/src/main/liberty/config/server.xml</configFile>
<serverEnv>${basedir}/src/main/liberty/config/server.env</serverEnv>
<jvmOptionsFile>${basedir}/src/main/liberty/config/jvm.options</jvmOptionsFile>
<packageFile>${package.file}</packageFile>
<include>${packaging.type}</include>
<bootstrapProperties>
<app.location>${project.artifactId}-${project.version}.war</app.location>
<default.http.port>${testServerHttpPort}</default.http.port>
<default.https.port>${testServerHttpsPort}</default.https.port>
</bootstrapProperties>
<features>
<acceptLicense>true</acceptLicense>
</features>
<looseApplication>false</looseApplication>
<serverName>${app.name}Server</serverName>
</configuration>
<!-- gas -->
<executions>
<execution>
<id>package-server</id>
<phase>package</phase>
<goals>
<goal>package-server</goal>
</goals>
<configuration>
<packageFile>${project.build.directory}/${app.name}-wlp.jar</packageFile>
<include>runnable</include>
</configuration>
</execution>
</executions>

</plugin>
<!-- Plugin to run functional tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<phase>integration-test</phase>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<includes>
<include>**/it/**</include>
</includes>
<systemPropertyVariables>
<liberty.test.port>${testServerHttpPort}</liberty.test.port>
<war.context>${warContext}</war.context>
</systemPropertyVariables>
</configuration>
</execution>
<execution>
<id>verify-results</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<summaryFile>${project.build.directory}/test-reports/it/failsafe-summary.xml</summaryFile>
<reportsDirectory>${project.build.directory}/test-reports/it</reportsDirectory>
</configuration>
</plugin>
</plugins>
</build>

<profiles>
<profile>
<id>runnable</id>
<properties>
<package.file>${project.build.directory}/${app.name}.jar</package.file>
<packaging.type>runnable</packaging.type>
</properties>
</profile>
</profiles>
</project>

关于java - 为什么没有找到休息终点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52469904/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com