3

Clojure コードを既存の JavaEE インフラストラクチャ (私の場合は Webspehere Application Server 8) と組み合わせた経験のある人はいますか?

jarアプリケーション サーバーにデプロイする を作成するとき、(ステートレス EJB に必要なクラスと 2 つのインターフェイスを含む) を配置して実行(:aot [carina.stateless])すると、依存するすべての clojure 名前空間で構成される巨大なファイルが作成されます。project.cljcarina.statelesslein jarjar

lein uberjarいくつかのアプリケーションを同じアプリケーション サーバーにデプロイし、共有 jar を利用するつもりだったので、回避しようとしましたが、今ではほとんどのコードがプリコンパイルされています。

javax.ejb.Remote実装と拡張だけを行っている場合、この AOT ステップで巨大な jar ファイルが生成されるのを回避する方法はありますjavax.ejb.Statelessか?

4

1 に答える 1

1

簡潔な答え:

いいえ、あなたが望むことをする方法はありません。いくつかの共有ライブラリを選択して、アプリ サーバーのクラス ローダー階層を上に移動することはできるかもしれませんが、「おそらく」努力する価値はありません。

しかし、このスペースに注意してください。

あなたの問題は、EJB が使用する clojure の一部しか必要としない (私が予想する) ことです。

現在、clojure はモジュール化されていないため、clojure.jar とすべての依存関係をすべて取得する必要があります。

現時点では役に立ちませんが、必要な機能は「ツリーシェイク」です。これにより、まだ特定されていないプロセスを通じて、依存関係を「シェイク」し、必要のないすべてのビットが落ちて、小さなランタイムと jar。

これは、android のような小さなプラットフォームでの展開に関連して、最新の clojure conj で言及されたと思います。

于 2012-05-03T19:46:34.813 に答える