2016-04-27 16 views
0

私は現在のWebサーバー構成でこのモノリスJARを持っています。システム全体が、あなたが別々のWebアプリケーションを持つことができないように描画されました。すべてがこの大きな瓶の周りを走っています。Javaでクラスをクローンすることはできますか?

これを解決する過程で、元のセキュリティパッケージ(私はソースコードを持っています)からsso認証を取り出しようとしています。私が扱っている問題はUsuarioクラスに関連しています。私が理解から

、元のクラスは、私がUsuarioSSOにUsuarioクラスを変更し

usuario = ssoUtil.getAtributosUsuario(tokenId); 

httpSession.setAttribute("usuario", usuario); 
httpServletRequest.setAttribute("usuario", usuario); 

のTokenIdからatributesを取得した後、「usuario」atributeを設定し、として全体の認証のことを実施しますグローバルサーバーフィルタ - プロジェクトの要件として、認証なしでサーバー上に何かを公開することは不可能なためです。

実際のUsuarioクラス(設定されているもの)は、プライベート変数、ゲッタ、セッタ、およびSerializableクラスとHttpSessionBindingListenerクラスの実装を持つ2つのメソッドの束です。

元INTLの問題から、いずれかのクラスがUsuarioはHttpSessionのからatributes取得しようとすると問題が発生する:

java.lang.ClassCastException: pathToClass.UsuarioSSO cannot be cast to intlPathToClass.Usuario 

私は何を達成しようとしていることは、このキャストは仕事を得ることです。しかし、ダウンキャストをすることは不可能です。どちらのクラスも同じです。

私は、INTL Usuarioクラスを自由に変更できますが、実際にそのクラスを使用するコードは変更できません。INTL Usuarioへの参照をすべてUsuarioSSOに変更することができます。

提案がありますか?

+0

UsuarioSSOはUsuarioを拡張できませんか? –

+1

なぜコードを複製するのですか?元の 'ウスアリオ 'クラスをビッグジャーから別のジャーに移す。次に、既存のアプリケーションと新しいフィルタでそのjarファイルを使用します。 – erickson

+0

クラスを別のjarに移動する場合、古いパッケージの命名規則を使用するか、元のUsuarioクラスへの参照をすべて変更する必要があります。 –

答えて

1

私はEricksonのコメントに同意します。クラスを別のjarに移動することができます。元のパッケージ名を保持することはできます。

2つのジャーは同じパッケージ名を使用できます。それが奇妙になるのは、それらのパッケージが同じクラスを持っている場合だけです。しかし、それはUsuarioクラスを動かすと問題になるはずです。

+0

これは1つの解決策ですが、それは不要です。クラスを別の瓶に移さずにこれを行う方法はありませんか? –

+0

INTL Usuarioオブジェクトで深いクローンを行い、UsuarioSSOにクローンを供給しますか? – user2347763

+0

私はINTL Usuarioにクローンを供給したいと思っていました。 –

関連する問題