問題タブ [cdi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2187 参照

java - 溶接での外部 (サードパーティ) Bean の解決

ほんの数か月前に仕様がリリースされたので、まだあまり普及していないことはわかっています。

私はまだ溶接を「インストール」していません。読んでいるだけです。この質問によって、この重要な点を正しく理解していることを確認したいと思います。

サードパーティの jar にある Bean の解決は<alternatives>beans.xml.

そうでない場合、持っていないサードパーティのライブラリから Bean を使用する方法はbeans.xml?

jar をクラスパスに置くことは、サードパーティの jar に当てはまらない にない限り機能しbeans.xmlませMETA-INFん。(この件に関する Gavin King の投稿を参照してください)

0 投票する
5 に答える
11339 参照

jakarta-ee - Java EE 6 CDI 実装の相違点

JBoss の Weld Reference Implementation of JSR-299 Contexts and Dependency Injection を見てきましたが、他の CDI 実装が互いにどのように比較されるかを知りたいと思っていました。具体的には、Weld、Resin CanDI (Caucho 作)、Apache OpenWebBeans について知っています。

0 投票する
3 に答える
3367 参照

jakarta-ee - 1つのクラスに対して複数のCDI/溶接Beanをインスタンス化する方法は?

Springでは、xml confで対応するBeanを定義することにより、任意のクラスをインスタンス化することが可能でした。同じクラスに対して、異なるパラメーターを使用して複数のBeanをインスタンス化することも可能でした。

CDIにもそのような機能がありますか?つまり、異なる初期化パラメーターを使用して同じクラスの異なるインスタンスを作成することは可能ですか?

クラスを変更せずにBeanを作成することも可能ですか...つまり、アノテーションを追加せずに作成できますか?

追加した

例を挙げましょう。

同じクラスの2つのインスタンスをインスタンス化し、異なるフィールド値で初期化するにはどうすればよいですか?

0 投票する
4 に答える
13707 参照

glassfish - セッション Bean をメッセージ駆動型 Bean に注入する方法は?

私はかなりJava EEに慣れていないので、これはばかげているかもしれません..我慢してください:D

ステートレス セッション Bean をメッセージ駆動型 Bean に注入したいと考えています。基本的に、MDB は JMS メッセージを取得し、セッション Bean を使用して作業を実行します。セッション Bean は、ビジネス ロジックを保持します。

これが私のセッション Bean です。

一致するインターフェース:

ここに私のMDBがあります:

これまでのところ、ロケット科学ではありませんよね?

残念ながら、これを Glassfish v3 にデプロイし、適切な JMS キューにメッセージを送信すると、glassfish が TestBean EJB を見つけられないというエラーが発生します。

だから私の質問は:

  • これは、セッション Bean を別の Bean (特にメッセージ駆動型 Bean) に注入する正しい方法ですか?
  • 名前の参照が失敗するのはなぜですか?
0 投票する
2 に答える
10304 参照

java - JPA実装でDAOをテストするには?

私は Spring キャンプから来ました。Spring を使用したくありません。JavaEE6 に移行していますが、DAO + JPA のテストに問題があります。簡単なサンプルを次に示します。

これは非常に基本的な DAO です。私は Spring から来たので、DAO にはまだ価値があると信じているので、DAO レイヤーを追加することにしました。

これは JPA で実装された DAO です。EE コンテナーまたはテスト コンテナーが EntityManager を注入できることを願っています (Spring のように)。

これは私のテストファイルです。

OK 、ここで問題が発生します。JUnit は @javax.inject.Inject を認識しないため、PersonDao は注入できず、テストは失敗します。

EntityManager を PersonDaoImpl に注入し、 @Inject PersonDaoImpl を TestCase の PersonDao に注入できるテスト フレームワークを見つけるにはどうすればよいですか?

unitils.org を試しましたが、このようなサンプルが見つかりません。必要なものではなく、 EntityManagerFactory を TestCast に直接注入するだけです...

0 投票する
4 に答える
4824 参照

java - アプリケーション サーバーなしの Java EE

EJB 3 以降、組み込み可能な EJB コンテナーがあり、JPA 実装はアプリケーション サーバーなしで使用でき、コンテキストと依存性注入のための Weld などがあります。多くのシステムでは Tomcat しか利用できないため、Java EE をアプリケーション サーバーなしで、Tomcat のようなサーブレット コンテナーと共に使用できるのではないかと考えています。

Java 環境をセットアップするにはどうすればよいですか? どのような欠点が見られますか?

0 投票する
3 に答える
1052 参照

java - @Inject in Weld (JSR-299 RI) による依存性注入。対応する @Produces はどのように見つけられますか?

スタンドアロン アプリケーションで使用する目的で、JSR-299 リファレンス実装「Weld」を試してみました。ドキュメントを見て、その魔法に驚嘆しました。

私の質問は、@Inject される特定のオブジェクトのプロデューサーがどのように見つかるかです。

Java コンパイラーは、クラスローダーが簡単に見つけられるアノテーションのヒントを生成するか、すべてのクラスをロードして完全なクラスパスをトラバースして、それらが何を行うかを確認する必要がありますが、これは私にとって非常に非効率的に聞こえるか、まったく異なるアプローチです。

トリックは何ですか?

0 投票する
6 に答える
23127 参照

java - Google Guice と JSR-299 CDI / Weld の比較

JSR-299 Contexts and Dependency Injection リファレンス実装である Weld は、Spring と Guice の後継者の一種と見なされています。

CDI は、Seam、Guice、Spring など、多数の既存の Java フレームワークの影響を受けました。ただし、CDI には独自の非常に明確な特徴があります。Seam よりもタイプセーフであり、Spring よりもステートフルで XML 中心ではなく、Guice よりも Web およびエンタープライズ アプリケーションに対応しています。しかし、言及されたフレームワークからのインスピレーションと、JSR-299 Expert Group (EG) による多くのコラボレーションと努力がなければ、これらのいずれも実現できませんでした。

http://docs.jboss.org/weld/reference/latest/en-US/html/1.html

Guice と比較して、エンタープライズ アプリケーションで Weld が優れている理由は何ですか? Guiceと比べてメリット・デメリットはありますか?溶接インターセプターと比較して、Guice AOP についてどう思いますか? パフォーマンスはどうですか?

私の選択

最終的に、デフォルトで @Inject 以外にアノテーションがほとんどないクリーンなプログラミング モデルが好きなので、Guice を使用することにしました。CDI よりも Guice で外部ライブラリを使用する方がはるかに簡単です。AOP も、Guice を使用すると非常に単純です。

0 投票する
1 に答える
1412 参照

jsf - `で会話の伝播を抑制できますか`?

get リクエストを使用してページにリンクする<h:link>ネストされた新しい JSF2タグを使用しています。<f:param>ただし、会話 ID (cid) は、リンクのクエリ パラメータを介して新しいページに伝達されます。

で会話の伝播を抑制することはできます<h:link>か? すなわち。URL に cid=# がありません...?

0 投票する
4 に答える
2525 参照

web-services - ロガーの注入、溶接

標準のロガー初期化をインジェクションに置き換えようとしています

1位

ステートレスBean/Webサービスで溶接溶接ロギングを使用しようとしていました

しかし、それは私には機能しません..私はjava.lang.reflect.InvocationTargetExceptionを取得します

javax.servlet.ServletException:java.lang.reflect.InvocationTargetException at org.glassfish.webservices.monitoring.WebServiceTesterServlet.doPost(WebServiceTesterServlet.java:326)at org.glassfish.webservices.monitoring.WebServiceTesterServlet.invoke(WebServiceTesterServlet.java:102) )org.glassfish.webservices.EjbWebServiceServlet.service(EjbWebServiceServlet.java:110)at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)at com.sun.grizzly.http.servlet.FilterChainImpl.doFilter( FilterChainImpl.java:195)at com.sun.grizzly.http.servlet.FilterChainImpl.invokeFilterChain(FilterChainImpl.java:139)at com.sun.grizzly.http.servlet.ServletAdapter.doService(ServletAdapter.java:376)at com com.sun.grizzly.tcp.http11.GrizzlyAdapterの.sun.grizzly.http.servlet.ServletAdapter.service(ServletAdapter.java:329)。service(GrizzlyAdapter.java:166)at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java: 245)com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)at com.sun.grizzly.http.ProcessorTask .process(ProcessorTask.java:954)at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)atcom.sun。 grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)atcom.sun.grizzly.http.HttpProtocolChain。execute(HttpProtocolChain.java:76)at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)at com.sun.grizzly.ContextTask .run(ContextTask.java:69)at com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:330)at com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:309 )at java.lang.Thread.run(Thread.java:619)原因:java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java :39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.glassfish.webservices.monitoring.WebServiceTesterServlet.doPost(WebServiceTesterServlet.java:297)... 24 more原因:javax.xml.ws.soap.SOAPFaultException:javax.ejb.EJBException at com.sun.xml .ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:189)at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:130)at com.sun.xml.ws.client.sei.SyncMethodHandler .invoke(SyncMethodHandler.java:119)at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub .java:140)at $ Proxy484.sayHello(Unknown Source)... 29 more原因:javax.ejb.EJBException at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5070)at com.sun .ejb.containers.BaseContainer。completeNewTx(BaseContainer.java:4968)at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4756)at com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:200)at$Proxy464。 sayHello(Unknown Source)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava。 lang.reflect.Method.invoke(Method.java:597)at org.glassfish.webservices.InvokerImpl.invoke(InvokerImpl.java:78)at org.glassfish.webservices.EjbInvokerImpl.invoke(EjbInvokerImpl.java:78)at com com.sun.xml.ws.server.sei.EndpointMethodHandlerの.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)。comb(EndpointMethodHandler.java:257)at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:95)at com.sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber。 java:629)at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573) com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)at org .glassfish.webservices.MonitoringPipe.process(MonitoringPipe.java:138)at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)at com.sun.xml.ws.api .pipe.Fiber .__ doRun(Fiber.java:629)at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)at com.sun.xml.ws.api.pipe.Fiber .doRun(Fiber.java:573)at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber。java:470)at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)at com.sun.xml.ws.tx.service.TxServerPipe.process(TxServerPipe.java: 306)com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)at com.sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber.java:629) com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)at com.sun .xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)at com.sun.enterprise .security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:195)at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:127)atcom.sun.xml.ws.api。pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)at com.sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber.java:629)atcom.sun.xml.ws.api.pipe。 fiber._doRun(Fiber.java:588)at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)at com.sun.xml.ws.api.pipe.Fiber.runSync( Fiber.java:470)at com.sun.xml.ws.server.WSEndpointImpl $ 2.process(WSEndpointImpl.java:295)at com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle(HttpAdapter.java :519)com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:288)at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:143) )org.glassfish.webservices.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:116)at org.glassfish.webservices.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:87)atorg.glassfish。webservices.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:196)at org.glassfish.webservices.EjbWebServiceServlet.service(EjbWebServiceServlet.java:127)... 22 more原因:java.lang.NullPointerException at ua.eset.inferno.heresy .ws.security.Hello.sayHello(Hello.java:33)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1056)atorg.glassfish。 com.sun.ejb.containers.BaseContainerのejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1128)。com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:615)at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)at com.sun .ejb.EjbInvocation.proceed(EjbInvocation.java:567)at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:157)at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy .java:139)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava。 com.sun.ejb.containers.interceptorsのlang.reflect.Method.invoke(Method.java:597)。AroundInvokeInterceptor.intercept(InterceptorManager.java:858)at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java: 367)com.sun.ejb.containers.BaseContainer .__ intercept(BaseContainer.java:5215)at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5203)at com.sun.ejb.containers.WebServiceInvocationHandler .invoke(WebServiceInvocationHandler.java:188)...66詳細__intercept(BaseContainer.java:5215)at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5203)at com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:188)... 66もっと__intercept(BaseContainer.java:5215)at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5203)at com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:188)... 66もっと

何が欠けていますか?

2位

これを参照しているこのチュートリアルを試すよりも-カスタムインジェクション

しかし、それも役に立ちません。

Mavenの依存関係-

Q1:ejb / Webサービスでの溶接ロガー注入のルールは何ですか?

Q2:wsdl / EJB / WebServiceの問題でしょうか?