そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

WebLogic Server 12c上でHibernateを使う

WebLogicHibernateを使った時にはまったことをメモしておきます。

利用している環境はWebLogic Server 12c。

発生したエラーはClassNotFound。 org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from 自分で作ったクラス]

解決方法はデプロイしようとしているのがwarファイルだったので、weblogic.xmlを開いてWEB-INF/lib以下を優先するように設定。

1.WEB-INF/lib以下全部を優先する場合

<weblogic-web-app>
(略)
  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>
(略)
</weblogic-web-app>

2.特定のjarのみWEB-INF/lib以下を優先する場合 今回使っているのはantlr-2.7.6.jarでした。

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app>
(略)
    <container-descriptor>
        <prefer-web-inf-classes>false</prefer-web-inf-classes>
        <prefer-application-packages>
            <package-name>antlr.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
(略)
</weblogic-web-app>

なるべくJava EEの標準ライブラリでやった方がこの手の問題は絶対楽だな。

参考サイト

https://blogs.oracle.com/WebLogicServer/entry/resolving_conflicts_with_classloaders http://stackoverflow.com/questions/2702266/classnotfoundexception-hqltoken-when-running-in-weblogic http://docs.oracle.com/cd/E24329_01/web.1211/e24368/classloading.htm#i1098467 Log4jantlrWebLogicのマニュアルのサンプルに載るくらい皆はまってるってことだな。

GitHubメモ

会社でやっているプロジェクトは複数の会社で構成されることが多く、GitHubを使ってます。 まだそれほど大規模な使い方では無いのでPrivate Projectで運用しています。

Issue管理や、Wikiも使用してコミュニケーションしています。 設計書はお客さんに提出する関係で、Officeで作っているけどこれもWikiに移行していけたらいいな、と思ってますが表や、図の書きやすさはまだまだMS Officeの方が良い。

Wikiにはプロジェクトに入ったら知っておいて欲しいルールや、環境の情報、Tipsなんかを書いていっています。

このエントリでは、GitHubを使う時のメモを書いていっています。

Step 1. リポジトリのクローン

GitHub上のプロジェクトをローカルに取得する

$ git clone https://github.com/AAA/BBB.git BBB/

URLの部分はGitHubリポジトリ画面の右下から持ってくることができます。 f:id:begirama:20140214164753p:plain

Step 2. ファイルの追加

$ vi test.txt  
$ ls  
README.md   test.txt  
$ git add test.txt   

Step 3. ローカルへのコミット

$ git commit -m "テスト用のファイルを追加"  
[master 2588d93] テスト用のファイルを追加  
 1 file changed, 1 insertion(+)  
 create mode 100644 test.txt  

Step 4. GitHubへのPush

$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 369 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/AAA/BBB.git
   1e9e805..2588d93  master -> master

これで、GitHub上に先ほどのファイルが更新される。

f:id:begirama:20140215110747p:plain

push.defaultが定義されていないという警告がでたので、設定する。

git config --global push.default simple

JavaのpropertiesのUTF8、Native変換

いつも忘れてしまう。

符号化されているpropertiesファイルをもらったら、こちらで人が読めるように変換。

native2ascii -reverse MessagesBundle_ja.properties MessagesBundle_ja_native.properties


日本語の修正が終わったら、符号化する。

native2ascii MessagesBundle_ja_native.properties MessagesBundle_ja.properties

Oracleの公式マニュアルはこちら。
http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/native2ascii.html

AppPotの概要紹介スライドを公開しました

AppPotの概要を紹介した資料を公開しました。
ここ最近、AppPotをご紹介するミーティングを良くやっていますが、
そこで使っている資料です。

AppPotの機能や、アーキテクチャの概要もあります。

モバイルアプリ向けプラットフォームAppPotをリリースしました

僕がNCDCの中でプロダクトオーナーを担当しているAppPotというソフトウェアが製品化されました。

f:id:begirama:20131018124306p:plain

AppPotはいわゆるMBaaSといわれるソフトウェアに含まれる下記のような機能を企業内で使い易いようにしたものです。

  • デバイス・サーバー間のデータ同期
  • Push通知
  • アプリを使用するユーザーの管理と認証

などなど


企業でこれまでPCを使ってやっていたような業務をタブレットを使ってどこでもできるようにするためには、既存のシステムとの連携が必須になります。

そこで、AppPotでは他システムと連携するためのアダプタを用意しています。


詳しくは製品サイトを見て下さい。
http://app-pot.jp/


現在、クラウド上でだれでも試せるトライアル環境を準備中です。できあがったら、使ってみてフィードバック下さい。


製品サイトの方では、誰にでも分かりやすいようにという制約がありますが、
個人のブログの中では内部のアーキテクチャや、プロジェクトの話しみたいなテクニカルな内容も書いていきたいなぁ。

日本の企業でのMEAP(Mobile Enterprise Application Platform)のニーズとは?

先日はモバイルアプリ向けプラットフォーム、MEAP(Mobile Enterprise Application Platform)とは何なのか。というタイトルでMEAPの概要を書きました。

今回は、日本のマーケットでのMEAPのニーズについて書きたいと思います。

f:id:begirama:20090605005119j:plain

企業マーケットにおいてこれまではモバイル向けのアプリは
さくっと低コスト、短期間で作成したいというニーズが高い状態でした。
理由としてはこのようなものがあったと思います。

  • 他のシステムから独立していることが多い
  • 既存の業務システムに比べて機能が少ない

例えば、カタログやデモを見せるだけのアプリや、
入力された情報に対してアプリの中で完結して結果を返すだけのアプリが該当します。


ところが、近年、スマートデバイスを一通り導入した企業では、
営業部門などの利用部門を中心にもっとコアな業務で
スマートデバイスでやりたいという要望があがっています。


その傾向を、MEAPの3つのメリットごとに整理してみると、

アプリに対する他システム連携のニーズ

既存の社内システムのデータをスマートデバイスから見る、
スマートデバイスから入力したデータを社内のシステムに
流し込むには、データの連係が必要になります。


社内システムはWebサービスのインターフェイスを持っているものもあれば、
ERPパッケージや、ホストのようなプロプライエタリなインターフェイスしか
ないものも存在するため、個別に開発するのは大変です。


また、社内システムに接続することから、これまで以上の
セキュリティが求められます。


共通機能を提供するニーズ

企業が持っているアプリが増えてきています。
ある企業ではプロダクトラインごとにアプリがあるので、
数十個のアプリが存在します。


これまでのスマートデバイスの導入期は、標準化よりもスピードが求められますし、
ベストプラクティスも無い状態でした。


しかし、アプリの数が増えてきて、導入期から展開期に入ると、
同じような機能や、画面展開の共通化をしたくなってきます。

コストも下げたい。

そのような時にモバイルアプリに必要な共通機能を標準化して
提供するニーズは非常に高いと思います。


また、認証や、データの暗号化を共通で提供することで、
個々のアプリ開発プロジェクトに品質が依存せず、
一定のセキュリティが保たれるというメリットもあります。
これもセキュリティに関するルールが厳しい日本の企業のニーズにあっています。


マルチデバイス対応のニーズ

こちらはどうでしょうか?
日本の場合は端末を社員に配ることが多く、個人の端末から利用を
許可している企業もメールと、Webブラウザからのアクセスだけだったりするので、
社内向けのアプリではあまりマルチデバイス対応のニーズは多くないように思います。



ということで、他システム連携、モバイルアプリ向けの共通機能の
提供という点ではMEAPのニーズは今後、増えてくると思います。

後は、クラウドベースのBaaSを使うのか、社内にMEAPを構えるのか、
どのタイミングで投資をするのかとうのが検討ポイントでしょう。


モバイルアプリ向けプラットフォーム、MEAP(Mobile Enterprise Application Platform)とは何なのか。

MEAPという言葉をご存知でしょうか?
最近、日経コンピューターなんかにもちらっと出始めていますが、
Mobile Enterprise Application Platformの略で、そのまま訳すと、
企業で使用するモバイルアプリ向けのプラットフォームです。


調査会社のガートナーが2008年のレポートの中で使い始めた言葉で、
ガートナーは以下の条件に当てはまる企業はMEAPを検討する価値があると言っています。
・3つ以上のモバイルアプリをサポートしている
・3つのモバイル用OSをサポートしている
・少なくとも3つのバックエンドのデータソース(既存システムとか)と連携が必要


MEAPとはアーキテクチャであり、考え方です。
別に、技術標準があったり、この機能を持ってないとMEAP製品とは言えないというのはありません。

とはいえ、一般的にMEAPをうたっている製品が良くサポートしている機能はあります。
次の図は以前社内の技術報告会で使った資料ですが、青い部分が良くMEAPを実装した
製品で提供されている機能です。
f:id:begirama:20130827150212p:plain

ここでは大きく4つの機能群に分類してみます。
1.サーバー側でどんなモバイルアプリでも必要になりそうな共通機能を
  提供することで開発コストを下げるための仕組み。
  認証、データのキャッシュや同期のようなアプリから使用される機能を提供する。

2.バックエンドのシステムに接続しに行くためのコネクター
  例えば、DBへのアクセスや、Webサービス、FTPなどにノンコーディングで接続できる、など。

3.複数OSでの開発を用意にするようなクライアント側のSDK
  サーバ側のAPIをクライアントから使いやすいように
  SDKを提供していることが多いようです。

4.アプリや、ユーザなどを管理するための管理機能

次回、MEAPのニーズについて書きます。