【问题标题】:Spring boot application wont start in openshiftSpring Boot 应用程序不会在 openshift 中启动
【发布时间】:2016-03-27 18:43:53
【问题描述】:

我使用 DIY 墨盒创建了 openshift 项目,为 DB 添加了 postresql。现在我将源推送到云端,但我遇到了像这里的人一样的错误(但他没有使用 springboot):I can't start tomcat 7 server on linux openshift - Failed to start end point associated with ProtocolHandler ["http-nio-12345"]

Failed to start end point associated with ProtocolHandler

很明显,如果我运行应用程序两次,则会出现错误消息“无法启动与 ProtocolHandler 关联的端点”。我尝试了rhc app-tidy,通过openshift界面重启APP,我进行了更改,推送到云端,构建成功,但消息再次出现。如何停止应用程序以便我可以正常运行它?我执行重启后应用程序没有停止吗?

更新:我是否选择了正确的步骤? (使用 DIY 墨盒),您是否有一个简单(和工作)指南如何将这样的应用程序部署到 openshift?我尝试了一些我在网上找到的,但没有一个有效:(

【问题讨论】:

  • 请在有人回答后告诉我它是否对您有用 :)。我也尝试了很多,但无法部署。所以我改用 Heroku 和 Pivotal CF,它们更容易。
  • 当然,复活节后我会再试一次,因为我需要完成这项工作。
  • 您使用的其他技术是什么?你在使用 mvc、jsf、REST 等吗?您可以使用 DIY 部署 sb。
  • Spring boot 和 spring 数据(休眠)、postgresql、mvc 和安全性。这与您在本地运行应用程序的行为相同,然后您尝试再次运行它而不停止先前的实例

标签: spring-boot openshift


【解决方案1】:

这是我使用 DIY 墨盒的步骤,希望对您有所帮助

  1. 转到项目的主目录执行以下任务
  2. 创建 Settings.xml 并通过更新 settings.xml 来引用 maven repo,如下面的 xml sn-p 所示。并将文件添加到 git repo

    <settings>
        <localRepository>${OPENSHIFT_DATA_DIR}/m2/repository</localRepository>
    </settings>
    
  3. 进入.openshift目录,删除除action_hooks以外的所有文件

  4. 转到action_hooks 并执行以下任务
    一世。删除README.md
    ii.创建部署文件(注意创建时文件扩展名不应该是txt)并添加以下代码sn -p (它基本上是创建和下载并设置java8和maven

                #!/bin/bash
                set -x
                if [ ! -d $OPENSHIFT_DATA_DIR/m2/repository ]
                then
                        cd $OPENSHIFT_DATA_DIR
                        mkdir m2/repository                
                fi
                if [ ! -d $OPENSHIFT_DATA_DIR/jdk1.8.0_51 ]
                then
                    cd $OPENSHIFT_DATA_DIR
                    wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u77-b03/jdk-8u77-linux-x64.tar.gz
                    tar xvf *.tar.gz
                    rm -f *.tar.gz
                fi
    
                if [ ! -d $OPENSHIFT_DATA_DIR/apache-maven-3.3.3 ]
                then
                    cd $OPENSHIFT_DATA_DIR
                    wget http://mirror.fibergrid.in/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
                    tar xvf *.tar.gz
                    rm -f *.tar.gz
                fi
    
                cd $OPENSHIFT_REPO_DIR
                export M2=$OPENSHIFT_DATA_DIR/apache-maven-3.3.3/bin
                export MAVEN_OPTS="-Xms500m -Xmx500m"
                export JAVA_HOME=$OPENSHIFT_DATA_DIR/jdk1.8.0_51
                export PATH=$JAVA_HOME/bin:$M2:$PATH
    
                mvn -s settings.xml clean install
    


三。将部署文件添加到 git
iv.使用以下 sn-p 编辑 start 文件。

            #!/bin/bash
            source $OPENSHIFT_CARTRIDGE_SDK_BASH
            set -x
            export JAVA_HOME=$OPENSHIFT_DATA_DIR/jdk1.8.0_51
            export PATH=$JAVA_HOME/bin:$PATH
            cd $OPENSHIFT_REPO_DIR
            nohup java –Xms500m –Xmx500m -jar target/*.jar --server.port=${OPENSHIFT_DIY_PORT} --server.address=${OPENSHIFT_DIY_IP} &


v. 使用以下代码编辑 stop

            #!/bin/bash
            source $OPENSHIFT_CARTRIDGE_SDK_BASH
            PID=$(ps -ef | grep java.*\.jar | grep -v grep | awk '{ print $2 }')
            if [ -z "$PID" ]
            then
                client_result "Application is already stopped"
            else
                kill $PID
            fi



六。使部署文件可执行(注意:这非常重要,也是常见的错误,如果不可执行,您的项目将无法启动)

  1. 随着您的 maven srcpom.xml 一起提交更改,一旦提交完成,您的应用程序应该会自动启动,
    注意:第一次需要时间来满足需要下载 maven repo。
  2. 出于调试目的,最好在类路径中添加 logback.xml(src/main/resources)

    <?xml version="1.0" encoding="UTF-8"?>
     <configuration>
         <property name="LOG_FILE" value="${OPENSHIFT_LOG_DIR}/kp-apps.log" />
         <include resource="org/springframework/boot/logging/logback/base.xml" />
       <logger name="org.springframework.web" level="DEBUG" />
    

【讨论】:

  • 关于第六点:使部署文件可执行 - 怎么做?它应该是一个名为'deploy'的钩子,就像开始和停止一样,让它可执行是什么意思?无论如何,感谢您的指导,我今天会尝试一下,如果它有效,请告诉您:)
  • 它的 linux 执行属性 chmod 777 为所有人提供读写执行权限。文件权限必须是可执行的
  • 所以为了启动应用程序,我必须在启动 jar 时删除 JVM 参数(启动钩子),但在我这样做之后出现了同样的错误 :( 和以前一样
  • 但是没有必要手动设置 java 和 maven,因为它是默认存在的(我可以使用 java7)
  • 确保你在OPENSHIFT_DIY_PORT和IP、地址启动tomcat,Openshift分配不同的端口和IP地址,IP地址不是127.0.0.1(localhost)。并且在停止钩子时,请确保您停止应用程序。这里我要终止进程,但您可以使用执行器和关闭 REST api
猜你喜欢
  • 2017-01-02
  • 1970-01-01
  • 2015-02-21
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多