java - 在 Tomcat 7 上部署 JSP Web 应用程序(通过带有 GIT 的 OpenShift)

标签 java tomcat7 openshift war

我构建了一个 Web 应用程序,其中包含一个带有 mysql 数据库和 tomcat7 服务器的 Spring MVC 项目。现在发布到 OpenShift 的 GIT。 但是启动服务器只需要 160 毫秒,我可以清楚地看到没有真正加载任何内容。

如何进行真正的部署并将 Openshift Tomcat 连接到我的项目? 我可以编码,但在部署方面我不是一个智能灯泡。

我的 GIT 存储库如下所示: GitPicture1

怎么了?

编辑: 根据要求,pom.xml:

<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>com.afterguard</groupId>
  <artifactId>SailPlanner</artifactId>
  <version>0.8.0</version>
  <packaging>war</packaging>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>
  <profiles>
    <profile>
        <id>openshift</id>
        <build>
            <finalName>sailplanner</finalName>
            <plugins>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <outputDirectory>webapps</outputDirectory>
                        <warName>ROOT</warName>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
  </profiles>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.3</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.9</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>4.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>4.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>4.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-crypto</artifactId>
        <version>4.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <dependency>
        <groupId>com.openshift</groupId>
        <artifactId>openshift-java-client</artifactId>
        <version>2.7.0.Final</version>
    </dependency>

  </dependencies>
</project>

web.xml :

<?xml version="1.0" encoding="UTF-8"?>
<web-app    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://java.sun.com/xml/ns/javaee" 
            xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
            version="3.0">
  <display-name>SailPlanner</display-name>

  <welcome-file-list>  
    <welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>  
  </welcome-file-list>  

  <servlet>
    <servlet-name>sailplanner</servlet-name>
    <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>sailplanner</servlet-name>
<!--     <url-pattern>/</url-pattern> -->
    <url-pattern>/index</url-pattern>
    <url-pattern>/inside/admin</url-pattern>
    <url-pattern>/inside/admin/save</url-pattern>
    <url-pattern>/inside/admin/delete</url-pattern>
    <url-pattern>/inside/calendar_race</url-pattern>
    <url-pattern>/inside/calendar_cruise</url-pattern>
    <url-pattern>/inside/blog</url-pattern>
    <url-pattern>/inside/blog/submit</url-pattern>
    <url-pattern>/inside/blog/delete</url-pattern>
    <url-pattern>/inside/event_feed</url-pattern>
    <url-pattern>/inside/event/create</url-pattern>
    <url-pattern>/inside/event/delete</url-pattern>
    <url-pattern>/inside/event/crew/add</url-pattern>
    <url-pattern>/inside/event/crew/remove</url-pattern>
    <url-pattern>/inside/event/save</url-pattern>
    <url-pattern>/login</url-pattern>
    <url-pattern>/logout</url-pattern>
    <url-pattern>/403</url-pattern>
    <url-pattern>/registration</url-pattern>
    <url-pattern>/inside/yacht/create</url-pattern>
  </servlet-mapping>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
            /WEB-INF/sailplanner-servlet.xml,
            /WEB-INF/spring-security.xml,
            /WEB-INF/spring-database.xml
        </param-value>
  </context-param> 

        <!-- Spring Security -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

Git 推送日志(构建成功):

Repository ssh://566ffc920c1e668c8a000049@afterguard-sailplanner.rhcloud.com/~/git/afterguard.git/

Stopping jbossews cartridge
Sending SIGTERM to jboss:333213 ...
Stopping MySQL 5.5 cartridge
Stopping PHPMyAdmin cartridge
Waiting for stop to finish
Waiting for stop to finish
Repairing links for 1 deployments
Building git ref 'master', commit 277c797
Using Maven mirror /var/lib/openshift/566ffc920c1e668c8a000049/app-root/runtime/repo//.openshift/config/settings.rhcloud.xml
Apache Maven 3.0.4 (r1232336; 2012-12-18 14:36:37-0500)
Maven home: /usr/share/java/apache-maven-3.0.4
Java version: 1.7.0_91, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "2.6.32-573.12.1.el6.x86_64", arch: "i386", family: "unix"
Found pom.xml... attempting to build with 'mvn --global-settings /var/lib/openshift/566ffc920c1e668c8a000049/app-root/runtime/repo//.openshift/config/settings.rhcloud.xml clean package -Popenshift -DskipTests'
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building SailPlanner 0.8.0
[INFO] ------------------------------------------------------------------------
Downloading: http://maven.repository.redhat.com/techpreview/all/javax/servlet/javax.servlet-api/3.0.1/javax.servlet-api-3.0.1.pom

...A LOT OF BUILDING AND DOWNLOADING...

Downloaded: http://mirror.ops.rhcloud.com/nexus/content/groups/public/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar (422 KB at 6105.7 KB/sec)
[INFO] Packaging webapp
[INFO] Assembling webapp [SailPlanner] in [/var/lib/openshift/566ffc920c1e668c8a000049/app-root/runtime/repo/target/sailplanner]
[INFO] Processing war project
[INFO] Copying webapp resources [/var/lib/openshift/566ffc920c1e668c8a000049/app-root/runtime/repo/WebContent]
[INFO] Webapp assembled in [517 msecs]
[INFO] Building war: /var/lib/openshift/566ffc920c1e668c8a000049/app-root/runtime/repo/WebContent/ROOT.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.062s
[INFO] Finished at: Tue Dec 22 05:35:45 EST 2015
[INFO] Final Memory: 16M/161M
[INFO] ------------------------------------------------------------------------
Preparing build for deployment
Deployment id is 0f103f85
Activating deployment
Starting MySQL 5.5 cartridge
Starting PHPMyAdmin cartridge
Starting jbossews cartridge
Found 127.3.145.129:8080 listening port
-------------------------
Git Post-Receive Result: success
Activation status: success
Deployment completed with status: success

OpenShift的Tomcat日志:

Dec 22, 2015 6:47:27 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1503 ms
Dec 22, 2015 6:47:27 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Dec 22, 2015 6:47:27 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.54
Dec 22, 2015 6:47:27 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-127.3.145.129-8080"]
Dec 22, 2015 6:47:27 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 251 ms

ROOT.WAR文件结构,位于/var/lib/openshift/<uuid>/app-root/runtime/repo/WebContent :

|- META-INF
|- resources
|-- css
|-- fonts
|-- img
|-- js
|- WEB-INF
|-- classes
|--- com
|---- ...
|-- jsp
|--- index.jsp
|--- more jsp-sites
|-- jspf
|--- JSPF SITES I USE
|-- lib
|--- THE LIBS
|-- sailplanner-servlet.xml
|-- spring-datasource.xml
|-- spring-security.xml
|-- web.xml

最佳答案

您似乎忘记了在您的 pom.xml 中添加一个 openshift maven 配置文件,如下所示,使用正确的 maven-war-plugin 配置。

<profiles>
    <profile>
        <id>openshift</id>
        <build>
            <finalName>travel</finalName>
            <plugins>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.1.1</version>
                    <configuration>
                        <outputDirectory>webapps</outputDirectory>
                        <warName>ROOT</warName>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

那么您的应用程序结构似乎不寻常。通常要使用 Maven 构建 WAR,您将 webapp 内容放在 src/main/webapp 中,将资源放在 src/main/resources 中,将 WAR 特定类放在 src 中/main/java.

看看 maven-war-plugin 用户指南 here .

最后,查看这些文档可以帮助您了解如何使用 OpenShift 将应用程序部署到 Tomcat:

如果您正确遵循这些文档中描述的步骤,那么任何 git push 都会触发构建并将应用程序重新部署到 Tomcat

编辑 由于您现在遇到构建编译问题(不支持 Java 8),您应该看看这个答案:invalid target release 1.8

关于java - 在 Tomcat 7 上部署 JSP Web 应用程序(通过带有 GIT 的 OpenShift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34357858/

相关文章:

java - C++ 中的 memcpy 函数相当于 Java

JavaFX Self Installer With Inno Setup 5 - 修改后的 .iss 文件放在哪里?

Openshift oc 参数文件格式

mongodb - Openshift Pod Storage Mongodb - 下载卷

tomcat - 在 JEE/Tomcat 应用程序中,使用 java.util.logging 部署到 OpenShift,如何在运行时更改日志记录级别?

java - 如何使用 azure-cosmos sdk 在 JAVA java 中获取 JSON 数组形式的 cosmos 响应

java - JSR303 : Is it possible to inject arguments to a custom validator at validation time?

java - 在 doPost() 响应中发送数据?

java - Tomcat 应用程序作为使用 TLSv1.2 的另一台服务器的客户端

java - 异步 Servlet 异常