2011-06-28 44 views
4

我正在尝试在Tomcat中部署在Play框架中开发的Web应用程序。前几次我想,我在Tomcat控制台得到了下面的消息,Playframework + Tomcat部署问题

INFO: validateJarFile(C:\Tomcat7\webapps\sandbox.war\WEB-INF\lib\geronimo-servlet_2.5_spec-1.2.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 

所以我手动删除从播放战争文件的Geronimo的servlet_2.5_spec-1.2.jar。一旦做到这一点,我看到下面的成功消息,

13:56:43,571 INFO ~ Starting C:\Tomcat7\webapps\sandbox.war\WEB-INF\application 

13:56:43,618 INFO ~ Application is precompiled 
13:56:44,149 INFO ~ Connected to jdbc:mysql://localhost/db?useUnicode=yes&ch aracterEncoding=UTF-8&connectionCollation=utf8_general_ci 
13:56:44,899 INFO ~ Application 'play-sandbox' is now started ! 

当我尝试使用url http://localhost:8080/play-sandbox我得到一个404,上面写着访问从IE浏览器的应用程序“的请求的资源(/玩沙箱/ )不可用“。

我在Tomcat 7中运行这个并且tomcat日志已经清除。我用

play war play-sandbox -o sandbox.war 

产生战争

的问题是,

  1. 如何防止Geronimo的servlet_2.5_spec-1.2.jar冲突?
  2. 为什么我无法通过Tomcat部署中的浏览器查看应用程序?作为游戏运行{app name}的作品一切正常。

    同样的war文件在glassfish服务器中似乎工作得很好。我相信这与玩框架应用程序的上下文路径或应用程序的隔离有关。任何帮助,将不胜感激。

感谢, 阿比

回答

2

你试过Tomact的早期版本?根据部署矩阵,Play不会'正式'支持Tomact 7,所以这可能是问题的一部分。看到这里http://www.playframework.org/documentation/1.2.1/deployment

至于为什么应用程序工作时,当你做play run appname而不是当你通过tomcat部署时,是部署是完全不同的。 Play不是符合Java EE的框架。它选择不遵循Servlet规范路线,因为它觉得它太复杂,臃肿和限制他们想玩Play的地方。这就是为什么你没有Session和其他Java EE核心功能的原因。

因此,要让Play在Servlet容器中工作,需要将Play应用程序封装在一个包装器中,该应用程序将应用程序公开为符合Servlet的应用程序,并将其全部转移到WAR文件中。但是,您确实会失去标准Play应用程序的某些功能。

Play Devs和我在这方面会建议您始终使用Play应用程序服务器以充分利用您的应用程序并尽可能简化部署!

+0

@ Codemwnci- I我不确定您的应用程序服务器是什么意思?你的意思是“玩游戏..”命令来的吗?顺便说一下,我被迫使用Tomcat7,因为我们的组织使用该版本作为标准:(所以我可以做的更少..sad :( – Abhishek

+1

是的,我的意思是玩游戏应用程序服务器作为一个当你输入'play run'时(它使用Netty)开始。 – Codemwnci

1

首先我有同样的问题,像你当我部署一个web应用发挥到Tomcat 7,但后来我得到它正在运行:

  1. 是的,你必须手动删除Geronimo的servlet_2.5_spec-1.2 .jar库
  2. 原因可能是与第一个问题无关的额外错误。请查看<tomcat> /logs/catalina.out日志文件,并且还将其放入<tomcat>/logs/localhost。 <日期> .log文件!在我的情况下,它是一个缺少JDBC库。我将缺少的库添加到play applications/lib目录中,重新创建了war文件,再次删除了geronimo-servlet_2.5_spec-1.2.jar,之后我的应用程序在Tomcat 7.0.25下运行。