dev@glassfish.java.net

Re: About hybrid application which demonstrates an EJB as an OSGi service

From: Tang Yong <tangyong_at_cn.fujitsu.com>
Date: Mon, 10 Sep 2012 16:27:05 +0900

BTW: entities and simplewab can be deployed using "deploy --type=osgi"
command.

Tang Yong wrote:
> Hi Sahoo,
>
> I have tried ejbservice2, entities and simplewab on
> trunk/fighterfish/sample/uas and ran them successfully by deploying them
> on current gf built snapshot.
>
> Saying frankly, the sample integrated jpa/osgi, cdi/osgi, ejb bundle
> and wab into gf and is very interesting and strong.
>
> But I met a problem while deploying ejbservice2.
>
> [Problem]
>
> While I used the following command to deploy ejbservice2,
>
> "asadmin deploy --type=osgi
> E:\gfv4\trunk20120820\fighterfish\sample\uas\ejbservice2\target\sample.uas.ejbservice2.jar"
>
> deploying failed, and the following exception was found on server.log,
>
> Unable to load the EJB module. DeploymentContext does not contain any
> EJB. Check the archive to ensure correct packaging for
> E:\ondemandglassfish\glassfish3\glassfish\domains\domain1\applications\sample.uas.ejbservice2.
> If you use EJB component annotations to define the EJB, and an ejb or
> web deployment descriptor is also used, please make sure that the
> deployment descriptor references a Java EE 5 or higher version schema,
> and that the metadata-complete attribute is not set to true, so the
> component annotations can be processed as expected
> java.lang.RuntimeException: Unable to load the EJB module.
> DeploymentContext does not contain any EJB. Check the archive to ensure
> correct packaging for
> E:\ondemandglassfish\glassfish3\glassfish\domains\domain1\applications\sample.uas.ejbservice2.
> If you use EJB component annotations to define the EJB, and an ejb or
> web deployment descriptor is also used, please make sure that the
> deployment descriptor references a Java EE 5 or higher version schema,
> and that the metadata-complete attribute is not set to true, so the
> component annotations can be processed as expected
> at org.glassfish.ejb.startup.EjbDeployer.prepare(EjbDeployer.java:191)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:915)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:427)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:228)
> at
> org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:466)
> at
> com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:513)
> ...
>
> So, I want to know whether it is a bug or new feature still being not
> implemented or not?
>
> BTW: Putting the sample.uas.ejbservice2.jar into autodeploy\bundles
> directly has no problem and deploying is successful.
>
> Thanks!
> --Tang
>
> Tang Yong wrote:
>> OK, I will try them.
>>
>> Sahoo wrote:
>>> Something could be wrong with those samples. Use samples from
>>> https://svn.java.net/svn/glassfish~svn/trunk/fighterfish/sample
>>>
>>> Thanks,
>>> Sahoo
>>> On Friday 07 September 2012 12:36 PM, Tang Yong wrote:
>>>> Hi sahoo,
>>>>
>>>> Today, I looked your previous blog[1] again, and tried second hybrid
>>>> application which demonstrates an EJB as an OSGi service on my build
>>>> snapshot based on crrent gf trunk. But I met some problems.
>>>> [1]http://weblogs.java.net/blog/ss141213/archive/2009/06/accessing_an_ej.html
>>>>
>>>> Firstly, I modified parent pom[2] of the hybrid sample in order to use
>>>> the recent jar.
>>>> [2]pl. see the attachment(pom.xml)
>>>>
>>>> Secondly, I start to deploy hybridapp2-service.jar using the following
>>>> three ways,
>>>>
>>>> (1) using "asadmin deploy" command
>>>>
>>>>> asadmin deploy E:\gfv4\hybridapp2-service.jar
>>>> The result failed, and the following error happened on cmd shell.
>>>>
>>>> remote failure: Error occurred during deployment: Exception while
>>>> preparing the app : Unable to load the EJB module. DeploymentContext
>>>> does not contain any EJB. Check the archive to ensure correct packaging
>>>> for ...
>>>> If you use EJB component annotations to define the EJB, and an ejb or
>>>> web deployment descriptor is also used, please make sure that the
>>>> deployment descriptor references a Java EE 5 or higher version schema,
>>>> and that the metadata-complete attribute is not set to true, so the
>>>> component annotations can be processed as expected. Please see
>>>> server.log for more details. Command deploy failed.
>>>>
>>>> BTW: while using "asadmin deploy E:\gfv4\hybridapp2-service.war" , the
>>>> result is the same as (1).
>>>>
>>>> (2) using "asadmin deploy --type=osgi" command
>>>>
>>>>> asadmin deploy --type=osgi E:\gfv4\hybridapp2-service.jar
>>>> The result displayed on cmd shell is successful, but I found that while
>>>> deploying, start method of sahoo.hybridapp.example2.service.Activator
>>>> was firstly executed, and UserAuthServiceEJB.selfRef was null, so on the
>>>> server.log, the following info[3] was printed. Then, postConstruct()
>>>> method of UserAuthServiceEJB class was executed, but, after executing
>>>> [4], selfRef was still null.
>>>>
>>>> [3] "Not able to register the EJB as service, as it didn't deploy"
>>>> [4] selfRef = sessionContext.getBusinessObject(UserAuthService.class);
>>>>
>>>> (3) directly cp hybridapp2-service.jar into domain1\autodeploy\bundles
>>>>
>>>> The result is the same as (2).
>>>>
>>>> So, if having time, could you please confirm the sample and whether I
>>>> made some mistake or not? Or other reasons?
>>>>
>>>> Thanks!
>>>> --Tang
>>>>
>>>>
>>>
>
>
>

-- 
***−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
富士通南大軟件技術有限公司(FNST)
第二ソフトウェア事業部第一開発部
湯 泳(ユ エイ)
Addr: 南京富士通南大軟件技術有限公司(FNST)
     中国南京市雨花台区文竹路6号(210012)
Mail: tangyong_at_cn.fujitsu.com
Tel: +00-86-25-86630566  内線:7998-8303            
Fax: +00-86-25-83317685                    
***−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−