簡體   English   中英

將Spring Boot部署到Google App Engine Flexible Env時出現錯誤404

[英]Error 404 when deploy spring boot to google app engine flexible env

將Spring Boot應用程序部署到Google App Engine Flexible Env時遇到問題。 我只想只在GAE flexible環境中進行部署,因為我已經在同一gcp項目中運行了某些服務。 因此,我想將其部署為新的單獨服務,以便可以配置調度文件以運行微服務系統。

Exception in thread "main" java.lang.IllegalStateException: No Available Context
    at com.google.cloud.runtimes.jetty9.DeploymentCheck.lifeCycleStarted(DeploymentCheck.java:46)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.setStarted(AbstractLifeCycle.java:179)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
    at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1511)
    at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1438)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1437)

我在這篇文章之后嘗試了解決方案Jetty無法在appengine flexible中啟動spring boot應用程序

但還沒有成功。

我的pom.xml文件在下面:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source> <!-- REQUIRED -->
    <maven.compiler.target>${java.version}</maven.compiler.target> <!-- REQUIRED -->
</properties>


<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>tomcat-juli</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
        <scope>provided</scope>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>web-socket</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.1-901.jdbc4</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.kevin.SpringJqgridApplication</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.4.6.v20170531</version>
        </plugin>
        <!-- START plugin -->
        <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>appengine-maven-plugin</artifactId>
            <version>1.3.1</version>
        </plugin>
        <!-- END plugin -->
    </plugins>
</build>

有人可以幫助解決此問題嗎? 謝謝。

我已經遇到過幾次相同的問題,有一些潛在的解決方案:

  1. 您是否具有類似於以下內容的目錄/文件結構: webapp/WEB-INF/appengine-web.xml 如果在那里有該文件,並且正在使用maven插件進行部署,則它可能會嘗試按標准進行部署,並引發IllegalStateException錯誤。 解決方案:完全刪除webapp目錄(僅用於AppEngine標准配置)。 就個人而言,這是我今天早上收到的IllegalStateException的解決方案。

  2. 我在另一個應用程序上也遇到了同樣的問題,解決方案是確保在AppEngine的Spring Boot應用程序中確保擁有Jetty所需的ServletInitializer。 這里查看更多。

  3. 您確定Spring Boot應用程序可以正常運行嗎? 無法提供必要的環境變量時,我收到此錯誤,導致在應用程序嘗試運行時出現問題。 一個(有效的)示例可能是這樣的,確保將相應的環境變量添加到app.yaml中:

app.yaml中:

env_variables: SPRING_PROFILES_ACTIVE: "qa"

application.properties:

spring.profiles.active="${SPRING_PROFILES_ACTIVE}"

對於這兩種情況,我都沒有包含spring boot jetty依賴,而是我的build.gradle看起來像這樣:

compile(group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1')
compile(group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.2.RELEASE') {
    // GAE runs on Jetty, not Tomcat, must manually disable
    exclude(group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat')
}
compile(group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '2.0.5.RELEASE')
compile(group: 'com.google.appengine', name: 'appengine-api-1.0-sdk', version: '1.9.63')
compile(group: 'org.projectlombok', name: 'lombok', version: '1.18.2') {
    exclude(group: 'org.slf4j', module: 'jul-to-slf4j')
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM