4

我构建了一个 Play 应用程序并尝试使用以下命令在 weblogic 上进行部署:

play war -o myApp myApp

后来我刚刚将爆炸的war目录部署到weblogic,一切正常,但每次我尝试访问路由时。我收到以下错误:

Not found

GET /myApp/params

这是一项休息服务,而不是具有 UI 的应用程序。我尝试在 tomcat 上部署,一切正常,但我必须将应用程序上下文根设置为 /。我用 weblogic 尝试过同样的事情,但它没有用。

这是我的路线文件:

GET     /                                        Application.index

GET  /sectorinformer/{telephone}  Application.show

GET     /sectorinformer/public/                     staticDir:public

*       /{controller}/{action}                  {controller}.{action}

这是我的控制器代码:

package controllers;

import models.InstalAddress;
import models.SectorInfo;
import play.Logger;
import play.mvc.Controller;

public class Application extends Controller {

    public static void index() {
       render();
}

public static void show(String telephone) {
    Logger.debug("Starting request");
    Logger.debug("domain: '%s'", request.domain);
    String instalAddressId = InstalAddress.getInstalAddressId(telephone);
    SectorInfo si = new SectorInfo();
    si.initializeSectorInfo(instalAddressId);
    renderXml(si.generateXmlResponse());
}

}

提前感谢您的帮助。

4

4 回答 4

9

Weblogic 10 是完全兼容的 J2EE 5 应用服务器,因此它与 JPA 1.0 捆绑在一起。

让 Play 在 weblogic 上运行有两个小问题。

  1. 应用 Oracle 补丁以使 weblogic 支持 JPA 2.0
  2. 添加部署描述符属性以优先处理来自 web-inf 的类解析

两者都是微不足道的,Play 文档可能应该将 weblogic 10 标记为工作部署目标。

要修复#1,请打开以下oracle 链接

对于懒惰的读者,在wlserver/common/bin/commEnv.sh的顶部添加这个声明

export PRE_CLASSPATH=$MW_HOME/modules/javax.persistence_1.0.0.0_2-0-0.jar:$MW_HOME/modules/com.oracle.jpa2support_1.0.0.0_2-0.jar

对于 Windows,该文件是wlserver/common/bin/commEnv.bat

set PRE_CLASSPATH=%MW_HOME%/modules/javax.persistence_1.0.0.0_2-0-0.jar;%MW_HOME%/modules/com.oracle.jpa2support_1.0.0.0_2-0.jar

要修复#2,请在以下位置创建文件 weblogic.xml myplayapp/war/WEB-INF/weblogic.xml

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app>
    <container-descriptor>
            <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
</weblogic-web-app>

构建 web 存档时, play war会自动拾取 war 文件夹。

而已!

我个人认为 Play 应该自己创建 weblogic.xml,但这不是 1.2.1 的工作方式

于 2011-05-04T03:22:28.363 回答
0

我将我的 Play 应用程序(play 1.1.1)部署到 Websphere 6.1,我遇到了一些问题。不确定你有同样的问题,但这里有(希望它可以帮助你):

1- JDK 版本:我的“play war xxxx --zip”使用 JDK 1.6,而 Websphere 6.1 使用 JDK 1.5。当我尝试启动我的 web 应用程序时,抛出了 UnsupportedClassVersionException。我使用正确的 JDK et voilà 重新生成了我的战争文件!

2- 当您将战争应用程序部署到 Websphere 时,您可以指定上下文的名称。我不知道如何用 Weblogic 做到这一点,但你设置了正确的值吗?

正如 Niels 所说,分析日志文件:您应该会发现发生了什么!

于 2011-04-04T13:03:09.407 回答
0

不幸的是,我既没有 weblogic 知道也没有时间调查你有趣的问题。我只能给你一些提示,我会做什么:

尝试将应用程序与调试器连接起来,或者如果这不起作用,请检查代码并构建您自己的版本,其中包含大量日志语句。据我所知,每个请求都将由 ActionInvoker 处理。调用。看看参数是怎么来的。另一点是Router,它还有很多trace-logs。所以也许你先开始,让整个东西在跟踪级别上运行。也许这会给你一些提示,让你在哪里更详细地查看。

要做到这一点,请从一个干净的应用程序开始,不要进行任何配置技巧,特别是不要在 ROOT-Context 中运行它。只需创建play war myapp -o myapp.war --zip并部署它(不要忘记 --zip)。然后分析日志。

好看。

尼尔斯

于 2010-10-28T17:30:26.693 回答
-2

不幸的是,玩!不支持 Weblogic。
见:http ://www.playframework.org/documentation/1.2/deployment

于 2011-04-27T15:04:00.100 回答