在Tomcat 7上将Maven Java应用程序部署到OpenShift

时间:2015-06-06 17:39:53

标签: java git maven tomcat openshift

我在我的本地PC上运行了Maven构建的Java应用程序。我使用Eclipse和Apache / Tomcat作为我的服务器。我的申请中有两个项目:

  1. Java代码(JavaApp)
  2. Web应用程序(WebApp)
  3. 在我的WebApp Pom中,我将JavaApp作为依赖项包含在内。这在Eclipse和我的本地服务器上运行良好。的Apache / Tomcat的。

    我有一个OpenShift帐户,并为Tomcat 7(JBoss EWS 2.0)创建了一个应用程序/盒式磁带。使用Git我按照说明进行操作;

    1. 在我当地的Git上创建了OpenShift应用程序的克隆。
    2. 我从本地克隆中删除了SRC目录和pom.xml文件。
    3. 使用Maven我从WebApp项目创建了一个WAR文件。我通过查看WAR文件验证了我的JavaApp作为jar文件包含在WEB-INF / lib中。
    4. 我将我的WAR文件复制到了克隆的webapps目录。
    5. 我发出了git add。更新我的新文件。
    6. 我发布了git commit -m"更新了war文件"命令提交更改
    7. 我发出了git push命令将我的应用程序推送到OpenShift。
    8. 我的cmd窗口报告推送成功。然后我转到我的应用程序URL,我收到了jsp错误。我的应用程序配置方式,在被定向到index.jsp之前首先进入servlet。我已将一个对象附加到页面以填充某些字段。错误是说JSP无法找到我的对象的任何方法。此应用程序在我的本地服务器上正常工作。我怀疑由于某种原因,我的WebApp的OpenShift部署无法找到我的Java代码(请参阅下文)。

      我不知道为什么我会收到此错误,我们将不胜感激任何帮助!

      org.apache.jasper.JasperException: Unable to compile class for JSP: 
      
      An error occurred at line: 8 in the jsp file: /index.jsp
      The method getLastLocationSearched() is undefined for the type WelcomePageBean
      
      5: <head>
      6: <%@ page import ="org.williards.core.client.beans.WelcomePageBean" %>
      7: <% WelcomePageBean pageBean = (WelcomePageBean)   request.getAttribute("pageBean"); %>
      8: <% if(pageBean.getLastLocationSearched() != null){ %>
      9:  <script>
      10:         var lastSearchLocation = <%= pageBean.getLastLocationSearched() %>;
      11:     </script>
      

      堆栈跟踪:

      org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
          org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
          org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:451)
          org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
          org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
          org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
          org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
          org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
          org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
          org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
          org.williards.core.servlets.WelcomeServlet.pageNavigation(WelcomeServlet.java:26)
          org.williards.core.servlets.AbstractServlet.doGet(AbstractServlet.java:49)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
      

1 个答案:

答案 0 :(得分:0)

我的第一个问题是你的战争(我的意思是部署到OpenShift的战争,而不是源头)在本地运作?我怀疑你的战争不包含所有依赖。 要在OpenShift中正常工作,您需要确保OpenShift具有所有依赖项。 部署为战争时,您可以将第三方罐子添加到

src/main/webapp/WEB-INF/lib

另一个选项是通过源部署,允许您通过pom指示依赖关系。

您可以在以下OpenShift kb文章中查看所有详细信息: https://developers.openshift.com/en/tomcat-dependencies.html