リファクタリング中にパニくる。。

現在、複数のアプリケーションを一人で同時作成しているのですが、ソースがぐちゃぐちゃになってきたので、今更ながら共通処理を別プロジェクトにまとめて一元管理する事にしました。
WebApのプロジェクトでは、ビルドパスの追加と、プロジェクトのプロパティ→Webデプロイメント・アッセンブリーで、共通処理プロジェクトを追加すればサーバ実行時に動くようになるようです。
 その後、ソースを共通処理プロジェクト側に移動させていたのですが、動作確認するとDB接続箇所で意味不明のエラーが発生し、接続できなくなってしまいました。

<2015/06/24 13時14分30秒 JST> <[ServletContext@25608288[app:OfficeAp module:officeap path:null spec-version:3.0]] Root cause of ServletException. javax.security.auth.message.AuthException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLException: ユニバーサル接続プールを起動できません: oracle.ucp.UniversalConnectionPoolException: データソースから接続を取得できません: java.sql.SQLException: 接続プロパティ: 書式エラー: Property is 'v$session.program' and value is 'XX.XXXX.XXX.XXXXXXXXXX.common.DBConnectionManager'

他にもいろいろソースを移動させていたので、何が原因か解らなくちょっとしたパニック状態。。
数時間試行錯誤した後、エラーメッセージをちゃんと見直してみる。
v$sessionのprogramにクラス名がセットできないみたいだけど。。なぜ?

結果、パッケージ名が長くなってセット出来なくなっただけでした。。
48文字までしかダメみたい。

カテゴリー: Java

Coherence開発環境作成

これは昨年からの備忘録です。。

開発対象のインフラターゲットは、RHEL+WebLogic12 + Coherence + OracleDB 12cという構成

開発環境
Windows7, Oracle Enterprise Pack for Eclipse(OEPE Luna)
OracleDB(開発用にOracleXE)は別途インストール

WebLogicは、管理サーバ自体にアプリケーションをデプロイするようになってました。
(管理対象サーバ追加の仕方がよくわからなかったので・・)

OracleのWebからOEPEをダウンロード
インストール後、
WLSの起動時の環境設定バッチ setDomainEnv.cmd に下記を追加

↓Coherence設定ファイル等を外出しにする為、WebLogic起動時の引数として設定してます
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dtangosol.coherence.distributed.localstorage=false
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dtangosol.coherence.override=c:\dev\bin\tangosol-coherence-override.xml
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dtangosol.coherence.cacheconfig=c:\dev\bin\cache-config.xml
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dtangosol.pof.enabled=true -Dtangosol.pof.config=c:\dev\bin\pof-config.xml

set CLASSPATH=%CLASSPATH%;C:\Oracle\Middleware\Oracle_Home\coherence\lib\coherence.jar

↑Coherenceがインストールされた場所にあるライブラリを指定

インフラターゲット側では管理対象サーバで動かすので、WebLogicコンソールから上記をJVM実行引数として追加すればOKでした

進捗会議の仕方について

現在、筆者はある企業のあるシステムのリプレイスプロジェクトに参画していて、ある大手ベンダーが請負開発、筆者はユーザー企業側のメンバーとしてその一部機能を開発しています。

毎週、進捗会議としてその大手ベンダーが進捗説明をするMTGを2時間くらいで実施しており、その後の時間で設計レビューの時間という流れになっています。進捗会議はWBSを見るというよりも、サマリとして何の予定工数XXのうち消化はYY、予定に対してZZ遅れと言った説明する形になっています。(XXとかは人日ですね)

このような説明の仕方をしていると、このZZの遅れ以外に話題がないので、ユーザー企業から見れば何で遅れているのかを聞くくらいしかなく、ベンダー側はなぜ遅れて、どう取り戻すかを説明するようなことを毎回繰り返している事に気が付きました。

筆者としては、進捗説明後の設計レビューあたりしか感心が無いので聞き流している箇所なんですが、毎週同じようなやり取りなんだけどこれって要るの?とふと考えてしまいました。

筆者の経験上、大手ベンダーはだいたいこのようなサマリ資料を用意して進捗を説明するやり方が多いように思われますが、そもそも、おえらいさんが参加するような進捗会議でなく、システム部門の担当レベルだけが会議参加メンバーである場合においては進め方は違うのではないでしょうか?サマリ資料じゃなくWBSを見た方が、各タスクの関連とかを意識した上で指摘することもできるし、また、本当にその後に影響を与える遅れがある場合なんかは、このような進捗会議の場でそれが表面化することはほとんど発生せず、別途個別にこっそり通知されるのが殆どのケースではないでしょうかね?

ベンダーが進捗サマリ資料を毎週作成する工数が、どれだけユーザー支払工数にはねているかをちゃんと説明していますかね?その工数を理解すれば、その資料作らないでいいよって大抵なるんじゃないでしょうか?

結果的にこの進捗報告にやり方を、サマリ資料でなく、プロジェクト管理ツールから直出力されるチャートのみで簡単な説明で済ませれば、ベンダーの担当者も負担が減るし、MTG参加メンバーの時間も節約できてみんなうれしいんじゃないのかな?
筆者の立場ではちゃんと設計レビューする時間取ろうよ!後で痛い目見ますよ!というのが本音ですが。

これでうれしくないのはベンダーの営業だけだと思うんだけど。。