java.lang.IllegalArgumentException: renifleurs avec le type [ejb] et le type [appclient] ne doit pas réclamer l'archive en même temps
-
29-09-2019 - |
Question
Environnement : GlassFish 3.0.1, NetBeans 6.9, 6u21 JDK
En outre testé avec GlassFish 3.0.1, NetBeans 6.9.1, 6u22 JDK, mais les résultats sont les mêmes.
Problème :. Impossible d'exécuter l'application client dans une application d'entreprise (app-client, ejb, guerre)
Le pot EJB a Local uniquement interfaces et ne contient pas des méthodes principales.
GlassFish message
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 message de marche
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
Ce ne contient que la balise <display-name>
remplie, mais <ejb-ref>
peut également être spécifiée avec une interface <remote>
. Il n'y a pas de balise de <local>
, donc je suppose que app-client
est seulement capable de travailler avec les interfaces distantes. Est-ce vrai?
Quel pourrait être le problème ici?
Toute aide ou des idées serait appréciée! Merci d'avance, roulettes
La solution 2
- App-client accède à distance via des interfaces EJB
- Depuis GlassFish v3, les interfaces à distance doit être emballé dans une bibliothèque de classes Java, si les interfaces sont distribuables.
- App-client doit être à l'intérieur d'un EAR d'application d'entreprise (mais pas strictement le même oreille.C'est avec EJB et WAR).
Le tutoriel sous http://netbeans.org/kb/docs/javaee/ entappclient.html explique comment créer un app-client
, mais il ne fonctionne pas pour moi; il y a aussi une question pour cette question: Impossible d'exécuter l'application client qui accède à un EJB sur GlassFish v3 .
Autres conseils
Pas un expert Glassfish, mais il semble que le pot est vu à la fois comme un pot de ejb et un pot de client d'application. Si tel est le cas, ce n'est pas une application valide. La première chose que je vérifierais est d'assurer votre pot de client d'application ne pas ont soit:
- Un META-INF / ejb-jar.xml
- Toutes les classes annotées avec @Stateless, @Singleton, @Stateful ou @MessageDriven
Sur l'autre question, à droite, les clients d'application sont les clients distants et, par définition, ne peuvent pas parler aux haricots en utilisant leur interface @Local.