java.lang.illegalargumentexception: لا ينبغي أن يطالب Sniffers مع النوع

StackOverflow https://stackoverflow.com/questions/4106996

سؤال

بيئة: Glassfish 3.0.1 ، Netbeans 6.9 ، JDK 6U21

تم اختباره أيضًا مع Glassfish 3.0.1 ، NetBeans 6.9.1 ، JDK 6U22 ، ولكن النتائج هي نفسها.

مشكلة: غير قادر على تشغيل App-Client في تطبيق Enterprise (App-Client ، EJB ، War).

جرة 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 يصل إلى EJBS عبر واجهات عن بعد
  • نظرًا لأن Glassfish V3 ، يجب تعبئة الواجهات البعيدة داخل مكتبة فئة Java ، لذلك تكون واجهات قابلة للتوزيع.
  • يجب أن يكون App-Client داخل أذن تطبيق Enterprise (ولكن ليس فقط نفس الأذن مع EJB والحرب).

البرنامج التعليمي تحت http://netbeans.org/kb/docs/javaee/entappclient.html يشرح كيفية إنشاء app-client, ومع ذلك ، فإنه لا يعمل بالنسبة لي ؛ هناك أيضًا سؤال لهذه المسألة: غير قادر على تشغيل تطبيق App-Client الذي يصل إلى EJB على Glassfish V3.

نصائح أخرى

ليس خبيرًا في Glassfish ، ولكن يبدو أن الجرة تُرى على أنها جرة EJB وجرة عميل التطبيق. إذا كان هذا هو الحال ، فهو ليس تطبيقًا صالحًا. أول شيء سأتحقق منه هو التأكد من قيام جرة عميل التطبيق الخاص بك ليس إما:

  1. a meta-inf/ejb-jar.xml
  2. أي فصول مشروحة مع STATELOS أو Singleton أو stateful أو @messagedRiven

على السؤال الآخر ، صحيح ، فإن عملاء التطبيق هم عملاء عن بُعد ولا يمكنهم التحدث إلى الفاصوليا باستخدام واجهة @local الخاصة بهم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top