播放框架weblogic 10.3.3.0部署

时间:2010-10-27 13:28:41

标签: deployment weblogic-10.x playframework

我构建了一个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 个答案:

答案 0 :(得分:9)

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

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

  1. 应用Oracle补丁以使weblogic支持JPA 2.0
  2. 添加部署描述符属性以从web-inf
  3. 确定类解析的优先级

    两者都很简单,Play文档应该将weblogic 10标记为工作部署目标。

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

    对于懒惰读者,请在 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>
    

    构建网络存档时, 播放战争 会自动选择war文件夹。

    就是这样!

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

答案 1 :(得分:0)

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

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

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

好看。

尼尔斯

答案 2 :(得分:0)

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

1- JDK版本:我的“play war xxxx --zip”使用JDK 1.6,而Websphere 6.1使用JDK 1.5。当我尝试启动我的webapp时,抛出了UnsupportedClassVersionException。我使用正确的JDKetvoilà再生我的war文件!

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

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

答案 3 :(得分:-2)

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