About
もうひとつの hiromasa.zone。-
Recent Comment
Kyodeki
Category
-
Random Post
WordPress
このブログで関連すると思われる他の投稿
-
Click Framework を使ってみる
Click, フレーム, ワーク, table, Java, HTML, String, Framework, import, public, テーブル, new, Twitter, Web, html, java, twitter, アプリ, コントロール, Column -
サーバサイド Groovy と Groovlets
groovy, Groovy, Groovlets, servlet, コンパイル, import, index, Eclipse, Java, url-pattern, サーバ, デプロイ, ファイル, 開発, --, GSimpleServlet, Groovy-Eclipse, WEB-INF, html, servlet-mapping -
マルチプラットフォームの GUI アプリケーション
SWT, import, JFace, eclipse, org, new, jface, ApplicationWindow, GUI, window, Linux, Windows, public, Java, swt, Eclipse, File, GTK, JFaceSample, MenuManager -
Eclipse WTP + Apache Tomcat 環境設定
Apache, Eclipse, Click, Tomcat, デプロイ, 選択, Java, サーバ, ファイル, プロジェクト, 実行, 環境, 起動, EE, アプリ, ブラウザ, 新規, 構成, 設定, 追加 -
クラウドサーバ(?) Morph AppSpace に Pebble ブログをインストールしてみる
アプリケーション, サーバ, Java, デプロイ, Morph, AppSpace, アプリ, Pebble, 環境, クラウド, ファイル, PHP, Web, インストール, サービス, 管理, on, setup, アクセス, ブログ

















Stax Networks への JavaEE アプリのデプロイ
慣れの問題もあるかもですが、ぼくはちょっとした自分でしか使わないような Web アプリをつくるのに PHP とかより Java を使った方が早い場合があります。 言語的な問題というより環境、、便利なライブラリがたくさんあって、いれるのも lib に jar 入れるだけだし~、みたいな(笑)
問題はインターネット上にデプロイする先があまりないことですが、クラウドがでてきてくれたので最近はいくつか無料で使わせてくれるところがでてきています。
昔 Morph AppSpace を使って遊んでいましたが、Stax Networks というのも良さそうなので実験してみました〜 Google App Engine なんてのもありますね。:-P
というわけで、早速適当なものをつくってデプロイ。
以前から iアプリ用の Java の twitter クライアントがほしいなぁとおもっていて、この場合サーバサイドのプロキシがないと実装できないので、それをつくるのを見据えて、とりあえず REST すると public タイムラインとってくるのをやってみようと思いました。
Java EE に JAX-RS という REST の仕様がありますが、その実装である JBoss の RESTEasy と、twitter にアクセスするために twitter4j を使ってみます。
Eclipse で動的 Web プロジェクトを新規作成して、WebContent/WEB-INF/lib に各ライブラリ jar を放り込みます。
WebCOntent/WEB-INF/web.xml で RESTEasy をサーブレット登録して URL にマッピングします。
これでアプリをかく準備完了です。 ソースを適当にかきます。
RESTEasy は resteasy.scan を true にしておくと、@Path のアノテーションをもつクラス(?)を勝手にスキャンしてくれてクラスロードしてくれるようです。
ということで、@Path で URI を指定しておけばエントリポイントが勝手にできます。 便利ですね。
@Path("/public")@Produces("application/xml")@Wrapped(element="public")public Set<PublicTimeLine> getPublic() {Twitter twitter = new Twitter();List<Status> statuses = null;try {} catch (TwitterException e) {HashSet<PublicTimeLine> publicTimeLine = new HashSet<PublicTimeLine>();for (Status status : statuses) {publicTimeLine.add(new PublicTimeLine(return publicTimeLine;@XmlRootElement(name = "tweet")class PublicTimeLine {public PublicTimeLine() { }public PublicTimeLine(String account, String tweet) {this.account = account;this.tweet = tweet;public String getAccount() {return account;public String getTweet() {return tweet;その try cache はおかしーじゃねーかというつっこみはなしで。。(笑)
twitter4j を使ってパブリックタイムラインをもらって XML で出力する例です。 @Path("/public") を指定しているので、コンテキストルート/public にメソッドがマップされます。 メソッドにさらにアノテーションでパスを指定したり引数をもらうこともできます。
まぁまぁここまではできるひとなら 15分仕事です。 PHP より楽じゃねっすかね。 ローカルではうまくうごくことでしょう。
で、これを Stax Networks にデプロイするわけですが、、はて、WAR玉 ってデプロイできるかな。 なにか専用の SDK あるみたいですが。。(笑)
というわけで、ちゃんとドキュメントがありました。 SDK に ant タスクがあるようです。 とりあえず、SDK をどっかにいれてあと ant もいれておきましょう。 (Ubuntu には ant のバイナリパッケージにあるんですが、念のため本家版をつかっています。 Eclipse 内蔵の ant でもいいかもです。)
Ubuntu の場合は、 ~/.profile に以下を書いておくといいかもです。
あとは、ドキュメントにかいてあるとおり build.xml にユーザ名とかパスワード、war の stax-application.xml パスをかきます。
stax-application.xml はとりあえず適当に Stax Networks の管理画面で BASIC Servlet and JSP なアプリを作成しておいて、それをダウンロードしてきてそのまんま使うのが楽かもしれません。
WAR ファイルはとりあえず面倒なので Eclipse のプロジェクトエクスポートでつくっています。 これで ant すればネットワーク越しにデプロイしてくれます。 Morph AppSpace と違ってすぐデプロイしてくれるようです。 URL にアクセスしてみましょう。
ちゃんと動いていますね。
さて、Stax Networks は素敵なことにドメインマッピングに対応しています。 とりあえず、自分のドメインの CNAME を設定しておきます。
最後にドットいれるのを忘れないよう。。
で、名前がひけるようになるまで我慢の子です。 Stax Networks 的に DNS が引ける状態でないとうまく登録してくれません。 もし管理画面で save しても値が空になるようならこの状態です。 ややまってからしましょう。 うまく保存できたら、、
素敵ですね。
実験的につくったものなので、まぁ URI かえるといろいろエラーでますが、どうやら Tomcat 使っているみたいです。
ファイルの書き込みがなければほとんどのフレームワーク/ライブラリは素直にうごくような雰囲気です。
DB (MySQL が使える)のほうはまだためしていませんが、JNDI 設定してしまえばあとは同じでしょう。 S2JDBC とか Hibernate とか動くんだと思います。
ふと思い立って、CMS とかも Java 製のものあるのかなとおもって検索してみると、エンタープライズ向けにいくつかあるようですね。 アプリケーションコンテナいるとコネクションプールとかシングルトンつかえるから性能的にはやっぱり有利な部分もあると思います。 PaaS が増えてくるとすればこれらも要チェックかもですね。
とりあえず、Stax は何もしなくてもいろいろ動きそう。 いろんなアプリをデプロイして実験してみるのも面白いかもしれません。