为什么找不到休息点?

时间:2018-09-23 20:15:18

标签: java spring spring-boot websphere

我有带有spring-boot-starter-web和jpa的spring-boot应用程序。 本地化就可以了。

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

我的项目具有下一个结构:

enter image description here

然后,当在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方法,则尝试启动时,战争在服务器上将失败。

1 个答案:

答案 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>