私はSpring MVC 3.0で新しいJava Webアプリケーションを作成しています。できるだけ多くの標準Java EE 6のものを使いたいと思っています。 (私はGlassfish 3.1.1を使用しています)実際のドライバは、JSFではなくMVC Webフレームワークを使用したいと考えています。Spring MVC 3.0と@EJBアノテーションを使用するwtHout mappedName?
私はSpringコントローラにEJBを挿入する最良の方法を探しています。私はいくつかの成功を収めましたが、私はそれがどのように見えているのか満足していないし、もっと良い方法を見つけたいと思っていました。
// EJB
@Stateless
public class Service {
@PersistenceContext(name="MAIN")
private EntityManager em;
public void doSomething() { .... }
}
// Spring
@Controller
public class HomeController {
@EJB(mappedName="java:global/springtest/Service")
private Service service;
// controller methods use service
}
しかし、私は、コントローラ内の@EJB注釈の「にmappedName」を必要に不満だ:
これは、JNDI経由でEJBを見つけることによって、働いていました。
これを行うより良い方法はありますか?
しかし、良いニュースは、EJBとSpring Beanで同じ@Injectアノテーションを使用でき、唯一の違いは、どのフレームワークがオブジェクトを作成してインジェクションを行っているかです。
それはちょうど悪化IMOを感じるXMLに問題をプッシュします。 – wrschneider
@ wrschneider99なぜですか?あなたは* mappedName *パラメータを取り除きたいと思っています。それは質問ではありませんでしたか?それ以外の場合は、コード内でJNDIルックアップを行うことができます。これは完全に移植可能ですが、醜いでしょう。 – MaDa
明示的なmappedNameが不要なように、JNDIルックアップが慣例によって起こりうる何らかの方法があることを期待していました。あるいは、必要に応じて、EJBアノテーションのSpringの解釈に固有のデフォルトを利用するために、ステートレスアノテーションに設定をプッシュすることは気にしません。 – wrschneider