java.lang.IllegalArgumentException: снифферы с типом [ejb] и типом [appclient] не должны запрашивать архив одновременно - PullRequest
1 голос
/ 05 ноября 2010

Среда : GlassFish 3.0.1, NetBeans 6,9, JDK 6u21

Также протестировано со GlassFish 3.0.1, NetBeans 6.9.1, JDK 6u22, но результаты те же.

Проблема : невозможно запустить приложение-клиент в корпоративном приложении (app-client, ejb, war).

EJB-jar имеет только локальный интерфейс и не содержит основных методов.

Сообщение GlassFish

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)

приложения client.xml

Содержит только заполненный тег <display-name>, но <ejb-ref> также можно указать с интерфейсом <remote>. Нет тега <local>, поэтому, я думаю, app-client может работать только с удаленными интерфейсами. Это правда?

В чем здесь может быть проблема?

Любая помощь или идеи будут оценены! Заранее спасибо, мусорная

Ответы [ 2 ]

1 голос
/ 10 ноября 2010

Не эксперт по Glassfish, но звучит так, будто банку рассматривают как банку ejb и банку клиента приложения. Если это так, это не действительное приложение. Первое, что я хотел бы проверить, это убедиться, что у вашего jar-файла приложения нет есть:

  1. A META-INF / ejb-jar.xml
  2. Любые классы, аннотированные @Stateless, @Singleton, @Stateful или @ MessageDriven

По другому вопросу, верно, клиенты приложений являются удаленными клиентами и по определению не могут общаться с компонентами, используя их интерфейс @Local.

0 голосов
/ 10 ноября 2010
  • Приложение-клиент получает доступ к EJB-компонентам через интерфейсы Remote
  • Начиная с GlassFish v3, интерфейсы Remote должны быть упакованы в библиотеке классов Java, поэтому интерфейсы являются распространяемыми.
  • App-клиентдолжен находиться внутри EAR корпоративного приложения (но не строго EAR с EJB и WAR).

В руководстве под http://netbeans.org/kb/docs/javaee/entappclient.html объясняется, как создать app-client, однако онне работает для меня;есть также вопрос по этому вопросу: Невозможно запустить приложение-клиент, который обращается к EJB на GlassFish v3 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...