SSブログ

Content license from you? [IC]

Java プログラムをホストできるサービスの Morph を調べている。Morph の利用規約によくわからない条項がある。「Content license from you」という部分。 http://www.morphexchange.com/terms_of_use から 11 条を引用する。

11. Content license from you
11.1 You retain copyright and any other rights you already hold in Content which you submit, post or display on or through, the Services. By submitting, posting or displaying the content you give Morph Labs a perpetual, irrevocable, worldwide, royalty-free, and non-exclusive license to reproduce, adapt, modify, translate, publish, publicly perform, publicly display and distribute any Content which you submit, post or display on or through, the Services. This license is for the sole purpose of enabling Morph Labs to display, distribute and promote the Services and may be revoked for certain Services as defined in the Additional Terms of those Services.

11.1条の前文はようするに、Morph に投稿したコンテンツに関していろんな権利を Morph に与えてよと読める。問題は、次の文。

This license is for the sole purpose of enabling Morph Labs to display, distribute and promote the Services and may be revoked for certain Services as defined in the Additional Terms of those Services.

この文章の意味は、Morph に投稿したコンテンツに関して Morph に与えた権利は、サービスを表示/配布/宣伝する場合に使われ、追加条項により定めたサービスでは取り除かれるかもしれない という意味だと思う。

may be revoked for certain Services as defined in the Additional Terms of those Services.

は This license にかかっているということで良いのだろうか。

私の解釈はあってるかな?。ライセンスは日本語で書いてあっても難しいので英語だと理解するのはかなり厳しいなー。英語のライセンスをちゃんと読む人って殆どいないのでしょうね。

ちなみに Google Chrome のライセンスにも似たような条項(ただし、Google の場合は This license is for the sole...に該当する部分は無かったはず)はあって、現在では修正されている。


タグ:Morph

Managed Bean (Backing Bean) とは? [IC]

NetBeans の Visual WEB ICEFaces はとても便利だが Java Server Faces の基礎を知っていないと悩むこともある。

例えば、既定では Page1.jsp と Page1.java というファイルが作成される。Page1.java は Managed Bean (Backing Bean と呼ばれることもある)に該当する。Page1.jsp にテキストフィールドを定義し、ブラウザからテキストを入力すると Page1.java にその内容が伝わる。Managed Bean は、このような裏方(サーバーサイドで処理をするような)の Java Beans である。

では、Managed Bean にメンバ変数を定義したとき、複数のブラウザからアクセスしたら、メンバ変数のデータはどうなるか。また、いつ作成・削除されるのか。

Managed Bean は faces-config.xml に作成したことを定義しなければならないが、このとき、managed-bean-scope 要素でインスタンスの生存期間を定義する。ここで設定した内容がポイント。例えば session にすれば、Managed Bean の生存期間は、あるユーザがセッションを開始して終了するまでになる。また、ユーザごとに(セッションごとに)インスタンスが生成されるため、複数ユーザ間の競合は発生しない。

本来は、HTTP はステートレスなので「どのユーザの処理を行っているか」を意識しなければならないが、Managed Bean を session で使用すれば意識する必要がなくなる。...らしい。


タグ:Java

Servlet/JSP でのエラーページの表示 その5 [IC]

ここ最近、Servlet/JSP でのエラーページの表示について調査してきた(Servlet/JSP でのエラーページの表示 その4)。

最終的に不具合の状況が判明した。

  • NetBeans の Visual WEB ICEFaces フレームワークを利用したときのみ web.xml に記述した error-page が無視される。
  • 無視されるのは 500 (Internal Server Error のページ)である。
  • 他は無視されない。
  • Servlet コンテナは無関係。
  • Icefaces 1.7.2 custom 500 error page + facelets に同様の投稿がある。
  • NetBeans の ICEFace フレームワークを利用したときは問題が生じない。

ということで、ICEFaces と facelets を同時に利用したときの不具合

これは気がつかなかったな。てっきり、web.xml など設定ファイルの問題か、Servlet コンテナ独自の設定の問題ではないかと思っていたので...

ICEFaces のフォーラムには既に投稿されているようなので次期バージョンでは修正されると良いなぁと思う。いったい、この問題に何時間費やしたんだろ。もったいない。

追記:VisualWeb ICEFacesの基礎の基礎 - しんさんの出張所 はてな編 という記事のコメントも参考になる。AJAX だとページ遷移するわけでは無いという部分が鍵だとは思うけど。


タグ:Java

ホットデプロイとは? [IC]

NetBeans のプラグインである j2ee.jetty を使用するとホットデプロイはサポートしていないと過去の記事に書いた。ところで、ホットデプロイとはどういう機能なのか。

ホットデプロイは製品によって表記が異なっている。ホット・デプロイ、ホット・デプロイメント、Hotdeploy、Hot deploy、Hot deploymentなど。

IBM の ヘルプ - WebSphere Application Server for OS/400, Version 6 では

サーバーの停止と再始動を行わなくとも、アプリケーションやそのモジュールにさまざまな変更を加えることができます。このような種類の変更のことを、「ホット・デプロイメントと動的再ロード」といいます。

としている。JBoss とは? 【 Okapi Project 】 では

次に便利なのが、ホットデプロイでしょう。 これは、J2EE サーバ ( JBoss ) を停止することなく、プログラムの入れ替えが可能な機能です。

とある。@IT:Java 製品紹介:JBoss 3 では

さらに、ホットデプロイ機能により、アプリケーションのデプロイも容易だ。JBossの起動後であっても、deployディレクトリにアーカイブ (EJB-JARやWAR、EAR)をコピー(もしくは展開してコピー)すれば、それらモジュールが読み込まれる。JBossを再起動する必要はない。こ れがホットデプロイと呼ばれる機能である。逆に、ファイルを削除すればアンデプロイとなる。ファイルを上書きすれば、アンデプロイ、デプロイが順番に実行 される。ホットデプロイは、アプリケーション開発時に重宝する機能だ。

と述べられている。[Think IT] 第4回:Javaのシステム更改を考慮していますか? (2/3) では

「ホットデプロイ」という用語は、各製品共通の用語ではありません。今回の記事では、「アプリケーションサーバを停止せずに、アプリケーションを更新する方法」を「ホットデプロイ」と呼んでいます。

とある。私が意図したのは「アプリケーションサーバを停止せずに、アプリケーションを更新する方法」である。どれも意図は同じように読めるが、製品によって動作が異なるかもしれない。ホットデプロイという言葉の定義は存在せず、製品によりばらつきがあるようだ。

j2ee.jetty プラグインではホットデプロイはサポートしていないが、jetty 自体はサポートしているようだ。デバッグ時にこの機能がないと開発の効率が下がるので、j2ee.jetty プラグインにはまだ改良が必要のようだ。


タグ:Java

Servlet/JSP でのエラーページの表示 その4 [IC]

NetBeans で Jetty プラグインを利用するには?その 2 の続き。

glassfish や tomcat では、JSP/Servlet で ServletException が発生したとき web.xml に記述した error.html が表示されるはずなのに表示されない。さて、jetty でも同様に発生するのだろうか?

web.xml に error-page を設定しないで ServletException を throw したのが次図。

imageB.gif

error-page (500)を設定したのが次図。

imageC.gif

問題なくカスタマイズしたエラーページが表示できている。

つまり、jetty では web.xml に記載した error-page が適用されている。尚、error-page は error.html  を設定しており、このファイルはアプリケーションルート(コンテキストルート)上にある。

imageD.gif

これまでの実験から、web.xml の記述そのものは問題無さそうである。glassfish と tomcat と jetty で web.xml の扱いが異なる?

問題がはっきりした。Servlet/JSP でのエラーページの表示 その5 に追記した。ICEFaces + facelets の不具合らしい。


タグ:Java

NetBeans で Jetty プラグインを利用するには?その 2 [IC]

NetBeans の main/contrib をビルドするには? その 4 の続き。

j2ee.jetty プラグインを NetBeans に組み込むと 「メニューバー」-「ツール」-「サーバー」で開くダイアログから Jetty を追加できるようになる。

image6.gif

image7.gif

これで NetBeans から Jetty が起動できるようになった。

このプラグインに対する設定項目はあまりなく、デフォルトのままで起動できる。ポートくらいしか変更できる部分はない。

image8.gif

次に、単純な JSP/Servlet を書いてプロジェクトの設定をしたのが次の図。

 image9.gif

「サーバー」に「Jetty Web Server」が選択できるようになる。

実際に JSP/Servlet を実行してみると次図のように正常に実行できた。

imageA.gif

少し試してみたところ jetty プラグインで幾つかわかったことがあるのでまとめておく。

  • JSP/Servlet の実行は可能。
  • JSP/Servlet のデバッグはサポートしていない(デバッグとして起動するとエラーメッセージが表示される)。
  • JSP/Servlet を修正したら再配備が必要。このとき、Jetty は再起動が発生するため重い(数秒くらいか)。

civic site : Jettyでホットデプロイ という blog では Jetty でもホットデプロイが出来ると紹介されている。また、Debugging with the Maven Jetty Plugin inside Eclipse - Jetty - Codehaus や、Maher TEBOURBI Blog: Debugging maven web application with eclipse を読むと Eclipse では Maven を用いてデバッグが出来ているようだ。

ということで、jetty の設定ファイルやプラグインを修正すればデバッグも出来るようになりそうだ。しかし、めんどくさそうなので開発は glassfish や tomcat を使った方が早いかもしれない。

 

ところで、そもそも Jetty をインストールした理由は glassfish や tomcat では、JSP/Servlet で ServletException が発生したとき web.xml に記述した error.html が表示されるはずなのに、表示されないが、これは jetty でも同様に発生するのか調べるためだった。

Servlet/JSP でのエラーページの表示 その4 に続く。


タグ:Java

NetBeans の main/contrib をビルドするには? その 4 [IC]

NetBeans の main/contrib をビルドするには? その 3 の続き。

オプションを付け忘れていたのでビルドに失敗するかなと思ったが、何とか成功した模様。

netbeans:
  [genlist] Generating information for Auto Update...
  [nbmerge] N:\tmp\main\nbbuild\netbeans
  [nbmerge] builtmodules=[ide.ergonomics]
  [nbmerge] builttargets=[-jdk-pre-preinit, -jdk-preinit, -jdk-warn, -jdk-presetdef-basic, -jdk-default, -jdk-init, -load-build-properties, bootstrap, init-module-list, set-buildnumber, init-tasks, in
it, all-ide.ergonomics]
    [touch] Creating N:\tmp\main\nbbuild\netbeans\nb.cluster.ergonomics.built

create-license-summary:
[createlicensesummary] N:\tmp\main\nbbuild\netbeans\THIRDPARTYLICENSE-generated.txt: written
[createlicensesummary] N:\tmp\main\nbbuild\build\createlicensesummary.xml: 0 failures out of 1 tests

build-nozip:
    [mkdir] Created dir: N:\tmp\main\nbbuild\netbeans\bin
     [copy] Copying 1 file to N:\tmp\main\nbbuild\netbeans\bin
     [copy] Copying 1 file to N:\tmp\main\nbbuild\netbeans\bin
    [mkdir] Created dir: N:\tmp\main\nbbuild\netbeans\etc
     [copy] Copying 1 file to N:\tmp\main\nbbuild\netbeans\etc
     [copy] Copying 1 file to N:\tmp\main\nbbuild\netbeans\etc
     [echo] N:\tmp\main\nbbuild\netbeans/platform9/lib/nbexec
     [copy] Copying 1 file to N:\tmp\main\nbbuild\netbeans\nb6.5

BUILD SUCCESSFUL
Total time: 73 minutes 56 seconds

ビルドが完了するまでに約 73分かかっているけどね!しかもこの時間はビルドプロセスが開始されると始めに実行されるバイナリファイルのダウンロード時間を除いて!時間がかかるのは最初だけだが大変だ。もっとも、NetBeans の規模を考えるとビルドは速いと思うべきかもしれない。

ちなみに、ビルドした環境は Athron XP 2500、RAM:1.5G。ハードディスクの空き容量は 30G 位あった方がよさそう。

さて、ここまでは NetBeans のビルド。 次は j2ee.jetty プラグインのビルドをする。

N:\tmp\main\contrib\j2ee.jetty>ant -Dpermit.jdk6.builds=true

として待つこと 17 秒。

BUILD SUCCESSFUL
Total time: 15 seconds

の文字が。

jar ファイルは私の環境では

[jarwithmoduleattributes] Building jar: N:\tmp\main\nbbuild\netbeans\extra\modules\org-netbeans-modules-j2ee-jetty.jar

に生成された模様。...あれ? jar ? nbm ではなくて?

NetBeans を使えばプロジェクトから mbm を作成できるとどこかの blog で読んだ気がしたので j2ee.jetty のプロジェクトを NetBeans で開きプロジェクトエクスプローラで右クリックすると【NBMの作成】メニューが見つかる。

実行すると、 java 5 を使ってねというメッセージが表示されたので、-Dpermit.jdk6.builds=true のオプションを付けなければならないようだ。

NetBeans でビルドするときに -Dpermit.jdk6.builds=true を指定するにはプロジェクトプロパティで指定する。この様子を次図に示す。

image5.gif

-Dpermit.jdk6.builds=true の場合、キーは permit.jdk6.builds で値が true になる。

それを設定して NBM を作成してみたところ、やっと成功。

せっかくなので作成した NBM を org-netbeans-modules-j2ee-jetty.nbm に置いておく。

プラグインを作ってくれた novakim 氏(main/contrib/j2ee.jetty)に感謝!(I wish to express my gratitude for the contribution of novakim for making plugin of j2ee.jetty.)

※私はビルドの仕方を blog に書て nbm を ビルドして SkyDrive に置いただけ。念のため。

NetBeans で Jetty プラグインを利用するには?その 2 に続く。


タグ:Java

NetBeans の main/contrib をビルドするには? その 3 [IC]

NetBeans の main/contrib をビルドするには? その 2 の続き。

ビルドを続けたところ、やっと binary のダウンロードが修了し、Java コードのコンパイルに入った。が、

BUILD FAILED
N:\tmp\main\nbbuild\build.xml:726: The following error occurred while executing this line:
N:\tmp\main\nbbuild\build.xml:721: The following error occurred while executing this line:
N:\tmp\main\nbbuild\build.xml:756: The following error occurred while executing this line:
N:\tmp\main\nbbuild\build.xml:739: The following error occurred while executing this line:
N:\tmp\main\nbbuild\build.xml:721: The following error occurred while executing this line:
N:\tmp\main\nbbuild\build.xml:767: The following error occurred while executing this line:
N:\tmp\main\nbbuild\templates\projectized.xml:65: You are attempting to build NetBeans using JDK 6 (or higher).
This is forbidden as it may lead to accidental usage of JDK 6+ APIs.
Either run Ant with JDK 5, or set nbjdk.home=<JDK 5 home> in N:\tmp\main\nbbuild\user.build.properties
(can be set from IDE by opening a module project's Properties dialog and picking the right Java Platform in Libraries).
You can alternatively set this property in C:\Documents and Settings\administrator\.nbbuild.properties to affect all checkouts on this machine.
If you are sure you want to build with JDK 6+ anyway, use: -Dpermit.jdk6.builds=true

Total time: 57 minutes 33 seconds
N:\tmp\main\nbbuild><a href="http://nbbuild.netbeans.org/ant-quick.html">nbbuild: netbeans.org : nbbuild : Ant : Quick Start</a>

と出力されてビルドが停止した。エラーを見るとどうやら NetBeans は JDK 5 でビルドして欲しいらしい。これは、JDK 6 以降に仕様が変更されたり追加されたりした API による不具合を避けるため。

それでも JDK 6 以降でビルドしたいなら -Dpermit.jdk6.builds=true を使えと書いてある。これはどこに使うのかな?Ant につけて実行したところ、ビルドされるようになった。

でもこれって、FAQ だろうなと思って調べてみると案の定 NetBeans Wiki: DevFaqGeneralWhereIsPlatformHowToBuild を見つけた。そこには次のように書いてある。

If you're using Java 6, you'll need to add an extra property: 
ant -Dcluster.config=platform build-platform -Dpermit.jdk6.builds=true

何?-Dcluster.config=platform build-platform も必要?時既に遅し。実行してしまったよ。NetBeans の Full Build はソースコードが多いから時間がかかるんだよ。今更やり直すのもなーということで、-Dcluster.config=platform build-platform は無視して実行中。

NetBeans の main/contrib をビルドするには? その 4 に続く。


タグ:Java

NetBeans の main/contrib をビルドするには? その 2 [IC]

NetBeans の main/contrib をビルドするには? の続き。

Mercurial binary packages for Windows and Mac OS X から Windows 版の Mercurial をダウンロードしてインストール。 NetBeans の main/contrib をビルドするには?で示したコマンドをコマンドプロンプトから実行して、リポジトリを取得。

N:\tmp>hg clone http://hg.netbeans.org/main
destination directory: main
requesting all changes
adding changesets
adding manifests
adding file changes
added 114338 changesets with 466180 changes to 103980 files
updating working directory
90338 files updated, 0 files merged, 0 files removed, 0 files unresolved

N:\tmp>cd main

N:\tmp\main>hg clone http://hg.netbeans.org/main/contrib
destination directory: contrib
requesting all changes
adding changesets
adding manifests
adding file changes
added 14765 changesets with 73502 changes to 22611 files
updating working directory
15877 files updated, 0 files merged, 0 files removed, 0 files unresolved

ここまで来るのに 3~4 時間。サーバーが混んでいた模様。他の人の blog をみると数時間はかかっているのでそんなものか。

NetBeans は Apache Ant でビルドできるので、 Apache Ant - Binary Distributions からダウンロード。これは単なる Zip ファイルなのでそのまま展開。nbbuild: netbeans.org : nbbuild : Ant : Quick Start を見ながら環境変数などを設定。%JAVA_HOME% は既に設定済なので省略。

N:\tmp\main>set ANT_HOME=E:\Java\apache-ant-1.7.1
N:\tmp\main>set PATH=%PATH%;%ANT_HOME%\bin
N:\tmp\main>set ANT_OPTS=-Xmx256m
N:\tmp\main>cd N:\tmp\main\nbbuild
N:\tmp\main\nbbuild>ant

するとコマンドプロンプトに色々と表示されるが、しばらくは依存している *.jar のダウンロードが実行される。

[downloadbinaries] Creating N:\tmp\main\antlr\external\antlr-2.7.2.jar
[downloadbinaries] Downloading: http://hg.netbeans.org/binaries/716F9FB05DFA63BFBF025705EFCF5EE9DE898464-antlr-2.7.2.jar
(以下略)

ということで、以降は次の記事で書く。ちなみに、日本語環境向けにビルドする設定はしていない。なぜなら、NetBeans の main/contrib をビルドするには?からずーっと続いてる NetBeans のビルドの意図は「Jetty のプラグインをビルドする」ために行っている。Jetty のプラグインはそもそも日本語化されていないから、日本語環境向けに設定しても無意味だからである。

閑話休題。

長々と書いたが次の blog 

を読むと、NetBeans で nbbuild を開けばビルド出来そうだ。なので行ってみたが必要なライブラリが無いと怒られた。どうも *.jar のダウンロードが行われないような気がする。私の環境の設定の問題かもしれないが調べていない。

NetBeans の main/contrib をビルドするには? その 3 に続く。


タグ:Java

NetBeans GUI Editor(Matisse) のバグ [IC]

NetBeans の GUI Editor (Matisse) は優れたエディタであるが、ちょっと困ったバグがある。

コンポーネントを貼り付けるとドラッグ&ドロップすると自動的に位置や大きさが調整される機能がある。この機能を無効に出来ないのだ。ALT キーを押しながらドラッグ&ドロップするとこの機能が無効になったように見えるのだが、キーを離すと結局、調整されてしまう。

すなわち、微妙な位置調整が出来ないのだ。これはどうもバグのようで BTS にも登録されている(#136425)。BTS に現象を説明した動画が添付されているので、これを見ると使いにくいことがよくわかる。  Vote 数は 4 なので、このバグを修正して欲しいという要望は少ないようだ。この不具合は致命的のように見えるのだが、Vote が少ないということは、困っている人が少ないということかもしれない。

Java(Swing) で GUI を 作ることはあまりないのであろう。Java の需要はサーバーと iアプリがやはり高いのだろうか。


しかし、そもそも Java のレイアウト管理は GridBagLayout、FlowLayout、BorderLayout などを用いて作るようになっていて、細かな調整はあまりしなかった気がする。pading や inset を調整すればできるがめんどくさかったような。レイアウトマネージャーを使わずに絶対座標で指定すればどうとでもなるが。

NetBeans の GUI Editor の生成するコードをみると GroupLayout を使って頑張っているようだ。


タグ:NetBeans

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。