GOL @Wiki

WebLogic上でMayaaを動かす

最終更新:

divadiva

- view
管理者のみ編集可


WebLogicの上で、Mayaaを動かします。プレゼンテーション層を構築する技術は他にもありますが、Webデザインとロジックの開発をなるべくうまく分離できそうなので、触ってみることにしました。Mayaaの特徴についてはこちら

WebLogic上でMayaaを動かす

(備考 とりあえず動かすために問題の原因追求および解決をせずに、その場しのぎ対応)
WebLogic SIP Server 2.2で簡単なWebUIを構築しようと思い、せっかくなのでMayaaを試してみることにしました。
まずは最初にWebLogic SIP Serverに含まれるHTTPコンテナのバージョンを調べようと思い、<DOMAIN>/setEnv.sh を実行した後、
 java weblogic.Admin -url t3://XXXX:PORT VERSION
を実行します。
その結果、HTTPコンテナは、WebLogic Server 8.1 SP5 であることが判明しました。

さて、いよいよMayaaのインストールです。まずはダウンロードサイトからブランクWAR(今回はmayaa-1.1.0.war)をゲットします。そして <DOMAIN>/applications に適当な名前のディレクトリを作成し(今回はmayaa-1.1.0)、そのディレクトリ内でWARファイルを展開、サーバを起動。まずは管理コンソール(http://XXXX:PORT/console)を開いて、[<DOMAIN>][デプロイメント][Webアプリケーションモジュール]の管理ページを開いて、展開済みのWARを指定してデプロイします。
デプロイが無事完了したら、http://XXXX:PORT/mayaa-1.1.0/ にブラウザでアクセスします。そうすると下記の様なエラーが返ってきます。

 java.lang.NoSuchMethodError: setWrapFactory
 	at org.seasar.mayaa.impl.cycle.script.rhino.RhinoUtil.enter()Lorg/mozilla/javascript/Context;(RhinoUtil.java:41)
 	at org.seasar.mayaa.impl.cycle.script.rhino.ScriptEnvironmentImpl$1.create([Ljava/lang/Object;)Ljava/lang/Object;(ScriptEnvironmentImpl.java:104)
 	at org.seasar.mayaa.impl.cycle.CycleThreadLocalFactory.get(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;(CycleThreadLocalFactory.java:105)
 	at org.seasar.mayaa.impl.CycleLocalVariablesImpl.getGlobalVariable(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;(CycleLocalVariablesImpl.java:27)
 	at org.seasar.mayaa.impl.cycle.CycleUtil.getGlobalVariable(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;(CycleUtil.java:73)
 	at org.seasar.mayaa.impl.cycle.script.rhino.ScriptEnvironmentImpl.startScope(Ljava/util/Map;)V(ScriptEnvironmentImpl.java:129)
 	at org.seasar.mayaa.impl.engine.specification.SpecificationUtil.startScope(Ljava/util/Map;)V(SpecificationUtil.java:134)
 	at org.seasar.mayaa.impl.engine.EngineImpl.createSpecificationInstance(Ljava/lang/String;ZLorg/seasar/mayaa/impl/engine/EngineImpl$SpecificationGenerator;)Lorg/seasar/mayaa/engine/specification/Specification;(EngineImpl.java:518)
 	at org.seasar.mayaa.impl.engine.EngineImpl.createDefaultSpecification(Ljava/lang/String;)Lorg/seasar/mayaa/engine/specification/Specification;(EngineImpl.java:535)
 	at org.seasar.mayaa.impl.engine.EngineImpl.build()V(EngineImpl.java:243)
 	at org.seasar.mayaa.impl.engine.EngineImpl.doPageService(Lorg/seasar/mayaa/cycle/ServiceCycle;Ljava/util/Map;Z)V(EngineImpl.java:329)
 	at org.seasar.mayaa.impl.engine.EngineImpl.doService(Ljava/util/Map;Z)V(EngineImpl.java:456)
 	at org.seasar.mayaa.impl.MayaaServlet.doService(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(MayaaServlet.java:84)
 	at org.seasar.mayaa.impl.MayaaServlet.doGet(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(MayaaServlet.java:67)
 	at javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(HttpServlet.java:740)
 	at javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(HttpServlet.java:853)
 	at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run()Ljava/lang/Object;(ServletStubImpl.java:1072)
 	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Lweblogic/servlet/internal/FilterChainImpl;)V(ServletStubImpl.java:465)
 	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(ServletStubImpl.java:348)
 	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run()Ljava/lang/Object;(WebAppServletContext.java:6981)
 	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic/security/subject/AbstractSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;(AuthenticatedSubject.java:321)
 	at weblogic.security.service.SecurityManager.runAs(Lweblogic/security/acl/internal/AuthenticatedSubject;Lweblogic/security/acl/internal/AuthenticatedSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;(SecurityManager.java:121)
 	at weblogic.servlet.internal.WebAppServletContext.invokeServlet(Lweblogic/servlet/internal/ServletRequestImpl;Lweblogic/servlet/internal/ServletResponseImpl;)V(WebAppServletContext.java:3892)
 	at weblogic.servlet.internal.ServletRequestImpl.execute(Lweblogic/kernel/ExecuteThread;)V(ServletRequestImpl.java:2766)
 	at weblogic.kernel.ExecuteThread.execute(Lweblogic/kernel/ExecuteRequest;)V(ExecuteThread.java:224)
 	at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:183)
 	at java.lang.Thread.startThreadFromVM(Ljava/lang/Thread;)V(Unknown Source)

そこで、WebLogic起動スクリプト(startWebLogic.sh)のCLASSPATHのところを編集して、<DOMAIN>/applications/mayaa-1.1.0/WEB-INF/lib/rhino-1.6r2.jar を先頭に追加します。

そして再度アクセスすれば、「Welcome to the Mayaa's template driven development!」というメッセージのHTMLが返ってきます。
記事メニュー
目安箱バナー