我终于有工作。我将记录我的步骤,以防将来任何人在WebSphere上部署Play应用时遇到类似问题。
1 - 第一个问题是,404的Websphere不传根(/)请求的应用程序来处理,所以解决方法是在你的路由文件中定义了类似的路线:
(WTF?)
GET /* Application.index
,而不是(或顶部)
GET / Application.index
2 - 接下来的问题是涉及到持久性错误(JPA)方法不存在。 Play使用JPA 2.0,而WebSphere 7使用他们自己的OpenJPA 1.0自定义版本。你可以安装a feature pack for JPA 2 and OSGI(你不需要OSGI部分,所以可以忽略)。请注意,该功能包要求安装WebSphere 7.0.0.9或更高版本。这意味着匹配应用服务器和捆绑JDK的修订包。 I.E.在安装JPA功能包之前,需要首先安装服务器和JDK的修订包21(最新的当时或正在编写)。在功能包安装结束时,它会询问您是否要运行配置文件工具。说是的。这个工具可以让你“扩充”你的配置文件(你要安装战争的服务器节点)。加大!
3 - 建立一个战争文件,将在WebSphere工作:
play war <appFolder> -o <outputFolder> --zip --%prod
这将创建一个名为<outputFolder>
(分解战争)的文件夹并命名为<outputFolder>
的.war .war文件,与应用程序ID设置刺激。爆炸的战争可以被删除。
在Linux上运行此命令不断把我的WEB-INF文件夹中的未命名的文件夹内(所以,倒从战争文件的根级别的水平)。换句话说,不是/ WEB-INF /,而是创建一个像/ WEB-INF /这样的结构。无论如何,我现在正在手动修复它,正确地重新压缩它。任何人都知道如何避免这个问题?
4 - 在管理控制台中的所有默认设置安装war文件到WebSphere ...或者调整他们,如果你知道自己在做什么。
5 - 我不能完全肯定,如果这一步是必要的(不会改变我的特殊应用的任何东西),但我已经有关获取Play应用在WebSphere运行在线阅读的建议说要怎么做。呃,它不会受伤。点击您安装的应用程序。点击“类加载和更新检测”链接。然后选择“首先使用本地类加载器加载的类(父最后)”选项。好。保存。
6 - 打开一个浏览器页面到您的地址(本地主机:9080,如果在本地运行WebSphere),以及测试。在这一点上它应该工作!希望。祝你好运。
我使用的上下文是默认/一个。我的web.xml和Websphere管理控制台覆盖都有/作为上下文根。 – DaveS 2012-02-22 18:35:55