java.lang.illegalargumentexception:タイプ[ejb]とタイプ[appclient]を備えたスニファーは、同時にアーカイブを請求すべきではありません
-
29-09-2019 - |
質問
環境: :Glassfish 3.0.1、NetBeans 6.9、JDK 6U21
また、Glassfish 3.0.1、NetBeans 6.9.1、JDK 6U22でテストされていますが、結果も同じです。
問題: :エンタープライズアプリケーション(App-Client、EJB、WAR)でApp-Clientを実行できません。
EJBジャーにはあります ローカルのみ インターフェイスとメインメソッドは含まれていません。
ガラスフィッシュメッセージ
SEVERE: Exception while deploying the app
java.lang.IllegalArgumentException: Sniffers with type [ejb] and type [appclient] should not claim the archive at the same time. Please check the packaging of your archive [C:\Users\myUser\.netbeans\6.9\config\GF3\domain1\applications\fabench-app-client]
at com.sun.enterprise.v3.server.SnifferManagerImpl.validateSniffers(SnifferManagerImpl.java:221)
at com.sun.enterprise.v3.server.ApplicationLifecycle.setupContainerInfos(ApplicationLifecycle.java:426)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:262)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.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)
at 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)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.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)
NetBeansはメッセージを実行します
Building jar: F:\NetBeansProjects\fabench\fabench-app-client\dist\fabench-app-client.jar
dist:
pre-run-deploy:
Distributing F:\NetBeansProjects\fabench\fabench-app-client\dist\fabench-app-client.jar to [GlassFish Server 3]
deploy?path=F:\NetBeansProjects\fabench\fabench-app-client\dist\fabench-app-client.jar&name=fabench-app-client&force=true failed on GlassFish Server 3
F:\NetBeansProjects\fabench\fabench-app-client\nbproject\build-impl.xml:716: The module has not been deployed.
BUILD FAILED (total time: 0 seconds)
Application-Client.xml
これにはのみが含まれます <display-name>
タグが満たされていますが、 <ejb-ref>
で指定することもできます <remote>
インターフェース。ありません <local>
タグ、だから私は推測します app-client
リモートインターフェイスでのみ動作できます。これは本当ですか?
ここでの問題は何でしょうか?
どんな助けやアイデアをいただければ幸いです!よろしくお願いします、ウィリー
解決 2
- App-Clientは、リモートインターフェイスを介してEJBにアクセスします
- Glassfish V3であるため、リモートインターフェイスはJavaクラスライブラリ内に梱包する必要があるため、インターフェイスは分散できます。
- App-Clientは、エンタープライズアプリケーションの耳の内側でなければなりません(ただし、EJBと戦争では厳密には同じ耳ではありません)。
下のチュートリアル http://netbeans.org/kb/docs/javaee/entappclient.html 作成方法を説明します app-client
, 、しかし、それは私にとってはうまくいきません。そのことについても質問があります。 GlassfishV3でEJBにアクセスしているアプリクライアントを実行できません.
他のヒント
ガラス魚の専門家ではありませんが、瓶はEJBジャーとアプリクライアントの瓶の両方と見なされているようです。その場合、それは有効なアプリではありません。私が最初にチェックすることは、あなたのアプリクライアントJARがすることを確認することです いいえ どちらかを持っている:
- Meta-inf/ejb-jar.xml
- @stateless、@singleton、@statefulまたは@messagedirvivenで注釈が付けられたクラス
他の質問では、適切に、アプリケーションクライアントはリモートクライアントであり、定義上、@Localインターフェイスを使用して豆と話すことはできません。