开发者

Play framework weblogic 10.3.3.0 deployment

I built a Play app and tried to deploy on weblogic using the following commands:

play war -o myApp myApp

Later I just deployed the exploded war directory to weblogic, everything worked fine but everytime I try to access a route. I get the following error:

Not found

GET /myApp/params

This is a rest service not an application with UI's. I tried to deploy on tomcat and everything worked fine but I had to make the application context root to be /. I tried the same thing with weblogic but it did not work.

Here is my route file:

GET     /                                        Application.index

GET  /sectorinformer/{te开发者_运维问答lephone}  Application.show

GET     /sectorinformer/public/                     staticDir:public

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

And here is my controller code:

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());
}

}

Thanks in advance for any help.


Weblogic 10 is a fully compliant J2EE 5 application server, as a consequence it is bundled with JPA 1.0.

There are two little issues to get Play running on weblogic.

  1. Applying an Oracle patch to have weblogic support JPA 2.0
  2. Adding a deployment descriptor property to prioritize class resolution from web-inf

Both are trivial and the Play documentation should probably mark weblogic 10 as a working deployment target.

To fix #1, open to following oracle link.

For the lazy readers, add this declaration at the top of 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

for windows, the file is 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

To fix #2, create the file weblogic.xml at the following location 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>

The war folder is automatically picked up by play war when the web archive is built.

That's it!

I personally believe Play should create weblogic.xml itself, but that's not how it works as of 1.2.1


Unfortunately I don't have either weblogic know nor time to investigate in you interesting problem. I can only can give you some hints what I would do:

Try to connect the app with a debugger or if this doesn't work checkout the Code and build your own version, with a lot of log-statements. As far as I know every request will handled by ActionInvoker. invoke. Look how the argument comes in. The other point is the Router, which has still a lot of trace-logs. So perhaps you start first and let the whole stuff run on trace-level. Perhaps that give you some hint's where to look in more detail.

To do this start with a clean app and make no configuration tricks, specially don't run it in ROOT-Context. Just create play war myapp -o myapp.war --zip and deploy it (Don't forget --zip). Then analyze the log.

Good look.

Niels


I deployed my Play app (play 1.1.1) to Websphere 6.1 and I encountered some issues. Not sure you have the same issues but here there are (hope it can help you):

1- JDK version: My "play war xxxx --zip" use a JDK 1.6, and Websphere 6.1 uses a JDK 1.5. When I tried to launch my webapp an UnsupportedClassVersionException was thrown. I regenerated my war file using the correct JDK et voilà !

2- When you deploy a war aplication to Websphere, you can specify the context's name. I don't know how to do it with Weblogic, but did you set the correct value ?

As Niels said, analyze logs files: you should find what happens !


Unfortunately, Play! doesn't support Weblogic.
See: http://www.playframework.org/documentation/1.2/deployment

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜