我有带有spring-boot-starter-web和jpa的spring-boot应用程序。 本地化就可以了。
然后,我构建war文件,并尝试将其部署在websphere上。
我的项目具有下一个结构:
然后,当在Websphere上部署我的应用程序后,我像ip:port / test一样加载根目录-显示从index.html开始的页面。
但是,当尝试打开我的应用程序的其余部分时-显示404错误。 对于来自客户端的发送请求,我尝试使用邮递员。
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方法,则尝试启动时,战争在服务器上将失败。
答案 0 :(得分:1)
如果您想将应用程序打包为war文件,那么这个简单的示例就可以在Liberty上正常工作,因此请尝试运行此文件,然后使用所需的功能进行扩展,以验证您的设置是否正确。
@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>