Issue Details (XML | Word | Printable)

Key: GLASSFISH-3386
Type: Improvement Improvement
Status: Open Open
Priority: Major Major
Assignee: Hong Zhang
Reporter: ivicac
Votes: 4
Watchers: 3
Operations

If you were logged in you would be able to see more operations.
glassfish

Glassfish V2 and exploded deployments

Created: 20/Jul/07 10:30 AM   Updated: 06/Mar/12 09:56 PM
Component/s: deployment
Affects Version/s: 9.1pe
Fix Version/s: not determined

Time Tracking:
Not Specified

Environment:

Operating System: All
Platform: All


Issuezilla Id: 3,386
Tags:
Participants: fabriciolemos, gfbugbridge, Hong Zhang, ivicac, Sanjeeb Sahoo, Tom Mueller and vince kraemer


 Description  « Hide

I am using glassfish V2 build 56. I am trying to use exploded deployment but
without any success. My structure of EAR is:
ctg.main.ear - exploded
ctg-main-war.war - exploded
ctg-main-ejb.jar - exploded
lib
META-INF
jboss-seam.jar - archive

Exploded directories are created by myeclipse.

After deployment I am getting the next exceptions:

2007.07.20 19:17:43 com.sun.enterprise.server.PEMain main
INFO: Starting Sun Java System Application Server 9.1 (build b56-rc) ...
2007.07.20 19:17:43 com.sun.enterprise.server.PEMain$LoadMBeanServer doRun
INFO: MBeanServer started: com.sun.enterprise.interceptor.DynamicInterceptor
2007.07.20 19:17:43 com.sun.enterprise.server.ss.ASLazyKernel startASSocketServices
INFO: CORE5098: AS Socket Service Initialization has been completed.
2007.07.20 19:17:43 com.sun.enterprise.server.ApplicationServer printStartupInfo
INFO: CORE5076: Using [Java HotSpot(TM) Client VM, Version 1.6.0_02] from [Sun
Microsystems Inc.]
2007.07.20 19:17:44 com.sun.enterprise.security.SecurityLifecycle <init>
INFO: SEC1002: Security Manager is OFF.
2007.07.20 19:17:44
com.sun.enterprise.server.logging.SystemOutandErrHandler$LoggingByteArrayOutputStream
flush
INFO: C:\appservers\glassfish\domains\domain1/config/.__com_sun_appserv_pid
2007.07.20 19:17:45 com.sun.enterprise.admin.server.core.AdminService init
INFO: ADM0001:SunoneInterceptor is now enabled
2007.07.20 19:17:45 com.sun.enterprise.security.PolicyLoader loadPolicy
INFO: SEC1143: Loading policy provider
com.sun.enterprise.security.provider.PolicyWrapper.
2007.07.20 19:17:45 com.sun.enterprise.web.VirtualServer configureSSOValve
INFO: WEB0114: SSO is disabled in virtual server [server]
2007.07.20 19:17:45 com.sun.enterprise.web.VirtualServer configureSSOValve
INFO: WEB0114: SSO is disabled in virtual server [__asadmin]
2007.07.20 19:17:46 com.sun.enterprise.admin.server.core.AdminService
initializeAMXMBeans
INFO: ADM1079: Initialization of AMX MBeans started
2007.07.20 19:17:46
com.sun.enterprise.admin.jmx.remote.server.rmi.JmxConnectorServerDriver
logJconsoleStartup
INFO: ADM1504: Here is the JMXServiceURL for the Standard JMXConnectorServer:
[service:jmx:rmi:///jndi/rmi://q1:8686/jmxrmi]. This is where the remote
administrative clients should connect using the standard JMX connectors
2007.07.20 19:17:46
com.sun.enterprise.admin.jmx.remote.server.rmi.JmxConnectorServerDriver
logJconsoleStartup
INFO: ADM1506: Status of Standard JMX Connector: Active = [true]
2007.07.20 19:17:47 com.sun.jbi.framework.JBIFramework startup
INFO: JBIFW0010: JBI framework ready to accept requests.
2007.07.20 19:17:48 com.sun.ejb.base.sfsb.util.EJBServerConfigLookup
needToAddSFSBVersionInterceptors
INFO: EJBSCLookup:: sc.getEjbContainerAvailabilityEnabledFromConfig() ==> false
2007.07.20 19:17:49 com.sun.jts.CosTransactions.DefaultTransactionService
identify_ORB
INFO: JTS5014: Recoverable JTS instance, serverId = [3700]
2007.07.20 19:17:49 com.sun.enterprise.server.ondemand.SystemAppLoader
loadSystemApps
INFO: About to load the system app: MEjbApp
2007.07.20 19:17:49 com.sun.enterprise.iiop.POARemoteReferenceFactory
createReferenceFactory
INFO: POARemoteRefFactory checking if SFSBVersionPolicy need to be added
2007.07.20 19:17:49 com.sun.ejb.base.sfsb.util.EJBServerConfigLookup
needToAddSFSBVersionInterceptors
INFO: EJBSCLookup:: sc.getEjbContainerAvailabilityEnabledFromConfig() ==> false
2007.07.20 19:17:49 com.sun.enterprise.iiop.POARemoteReferenceFactory
createReferenceFactory
INFO: POARemoteRefFactory addSFSBVersionPolicy? false
2007.07.20 19:17:49 com.sun.enterprise.iiop.POARemoteReferenceFactory
createReferenceFactory
INFO: POARemoteRefFactory checking if SFSBVersionPolicy need to be added
2007.07.20 19:17:49 com.sun.ejb.base.sfsb.util.EJBServerConfigLookup
needToAddSFSBVersionInterceptors
INFO: EJBSCLookup:: sc.getEjbContainerAvailabilityEnabledFromConfig() ==> false
2007.07.20 19:17:49 com.sun.enterprise.iiop.POARemoteReferenceFactory
createReferenceFactory
INFO: POARemoteRefFactory addSFSBVersionPolicy? false
2007.07.20 19:17:49 com.sun.enterprise.server.AbstractLoader loadEjbs
INFO: LDR5010: All ejb(s) of [MEjbApp] loaded successfully!
2007.07.20 19:17:49 com.sun.enterprise.server.ondemand.SystemAppLoader
loadSystemApps
INFO: About to load the system app: __ejb_container_timer_app
2007.07.20 19:17:50 com.sun.ejb.containers.TimerBeanContainer
doAfterApplicationDeploy
INFO: EJB5109:EJB Timer Service started successfully for datasource
[jdbc/__TimerPool]
2007.07.20 19:17:50 com.sun.enterprise.server.AbstractLoader loadEjbs
INFO: LDR5010: All ejb(s) of [__ejb_container_timer_app] loaded successfully!
2007.07.20 19:17:50 com.sun.enterprise.server.AbstractLoader loadPersistenceUnits
WARNING:
C:\appservers\glassfish\domains\domain1\autodeploy\ctg-main.ear\ctg-main-war_war\WEB-INF\classes
does not exist!
java.lang.RuntimeException:
C:\appservers\glassfish\domains\domain1\autodeploy\ctg-main.ear\ctg-main-war_war\WEB-INF\classes
does not exist!
at
com.sun.enterprise.server.PersistenceUnitInfoImpl.getAbsolutePuRootFile(PersistenceUnitInfoImpl.java:398)
at
com.sun.enterprise.server.PersistenceUnitInfoImpl._getJarFiles(PersistenceUnitInfoImpl.java:344)
at
com.sun.enterprise.server.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:112)
at
com.sun.enterprise.server.PersistenceUnitLoaderImpl.load(PersistenceUnitLoaderImpl.java:121)
at
com.sun.enterprise.server.PersistenceUnitLoaderImpl.load(PersistenceUnitLoaderImpl.java:84)
at
com.sun.enterprise.server.AbstractLoader.loadPersistenceUnits(AbstractLoader.java:898)
at com.sun.enterprise.server.ApplicationLoader.doLoad(ApplicationLoader.java:184)
at
com.sun.enterprise.server.TomcatApplicationLoader.doLoad(TomcatApplicationLoader.java:126)
at com.sun.enterprise.server.AbstractLoader.load(AbstractLoader.java:244)
at com.sun.enterprise.server.AbstractManager.load(AbstractManager.java:225)
at
com.sun.enterprise.server.ApplicationLifecycle.onStartup(ApplicationLifecycle.java:217)
at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:442)
at
com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:120)
at com.sun.enterprise.server.PEMain.run(PEMain.java:411)
at com.sun.enterprise.server.PEMain.main(PEMain.java:338)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.server.PELaunch.main(PELaunch.java:294)
2007.07.20 19:17:50 com.sun.enterprise.server.AbstractManager load
WARNING: CORE5021: Application NOT loaded: [ctg-main]
2007.07.20 19:17:50 com.sun.enterprise.web.PEWebContainer startInstance
INFO: WEB0302: Starting Sun-Java-System/Application-Server.
2007.07.20 19:17:50 com.sun.enterprise.web.connector.grizzly.GrizzlyHttpProtocol
start
INFO: WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8080
2007.07.20 19:17:50 com.sun.enterprise.web.connector.grizzly.GrizzlyHttpProtocol
start
INFO: WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8181
2007.07.20 19:17:50 com.sun.enterprise.web.connector.grizzly.GrizzlyHttpProtocol
start
INFO: WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 4848
2007.07.20 19:17:51
com.sun.enterprise.management.selfmanagement.SelfManagementService onReady
INFO: SMGT0007: Self Management Rules service is enabled
2007.07.20 19:17:51 com.sun.enterprise.server.PEMain main
INFO: Application server startup complete.
2007.07.20 19:17:51 com.sun.enterprise.deployment.autodeploy.AutoDeployer deploy
INFO: [AutoDeploy] Selecting file
C:\appservers\glassfish\domains\domain1\autodeploy\ctg-main.ear for autodeployment.
2007.07.20 19:17:51 com.sun.enterprise.deployment.autodeploy.AutoDeployer
undeployJavaEEArchive
INFO: Autoundeploying application :ctg-main
2007.07.20 19:17:51
com.sun.enterprise.deployment.phasing.PEDeploymentService$AuditInfo <init>
INFO: Undeployment by user Unknown of module ctg-main (type=Application) starting
2007.07.20 19:17:51 com.sun.enterprise.web.WebContainer unloadWebModule
SEVERE: [WebContainer] Undeployment failed for context /ctg-main.war
2007.07.20 19:17:51 com.sun.enterprise.server.ApplicationManager
applicationUndeployed
INFO: CORE5022: All ejb(s) of [ctg-main] were unloaded successfully!
2007.07.20 19:17:51
com.sun.enterprise.deployment.phasing.PEDeploymentService$AuditInfo reportEnd
INFO: Undeployment by user Unknown of module ctg-main (type=Application)
completed successfully, elapsed time 296 ms
2007.07.20 19:17:51 com.sun.enterprise.deployment.autodeploy.AutoDeployer
invokeUndeploymentService
INFO: [AutoDeploy] Successfully autoundeployed :
C:\appservers\glassfish\domains\domain1\autodeploy\ctg-main.ear.
2007.07.20 19:17:51
com.sun.enterprise.deployment.phasing.PEDeploymentService$AuditInfo <init>
INFO: Deployment by user Unknown of module ctg-main (type=Application) starting
2007.07.20 19:17:52 com.sun.enterprise.deployment.phasing.J2EECPhase runPhase
SEVERE: Exception occured in J2EEC Phasejava.lang.IllegalArgumentException:
Invalid ejb jar [jboss-seam.jar]: it contains zero ejb.
Note:
1. A valid ejb jar requires at least one session, entity (1.x/2.x style), or
message driven bean.
2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar.
3. If the jar file contains valid EJBs which are annotated with EJB component
level annotations (@Stateless, @Stateful, @MessageDriven), please check
server.log to see whether the annotations were processed properly.
com.sun.enterprise.deployment.backend.IASDeploymentException: Error loading
deployment descriptors for module [ctg-main] – Invalid ejb jar
[jboss-seam.jar]: it contains zero ejb.
Note:
1. A valid ejb jar requires at least one session, entity (1.x/2.x style), or
message driven bean.
2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar.
3. If the jar file contains valid EJBs which are annotated with EJB component
level annotations (@Stateless, @Stateful, @MessageDriven), please check
server.log to see whether the annotations were processed properly.
at com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:390)
at
com.sun.enterprise.deployment.backend.AppDeployerBase.loadDescriptors(AppDeployerBase.java:358)
at com.sun.enterprise.deployment.backend.AppDeployer.deploy(AppDeployer.java:226)
at
com.sun.enterprise.deployment.backend.AppDeployer.doRequestFinish(AppDeployer.java:148)
at com.sun.enterprise.deployment.phasing.J2EECPhase.runPhase(J2EECPhase.java:191)
at
com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108)
at
com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:919)
at
com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:276)
at
com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:294)
at
com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.deploy(ApplicationsConfigMBean.java:555)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:375)
at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:358)
at com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:464)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90)
at $Proxy1.invoke(Unknown Source)
at
com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304)
at
com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:174)
at
com.sun.enterprise.deployment.autodeploy.AutoDeployer.invokeDeploymentService(AutoDeployer.java:564)
at
com.sun.enterprise.deployment.autodeploy.AutoDeployer.deployJavaEEArchive(AutoDeployer.java:545)
at
com.sun.enterprise.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:492)
at
com.sun.enterprise.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:267)
at
com.sun.enterprise.deployment.autodeploy.AutoDeployControllerImpl$AutoDeployTask.run(AutoDeployControllerImpl.java:374)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
Caused by: java.lang.IllegalArgumentException: Invalid ejb jar [jboss-seam.jar]:
it contains zero ejb.
Note:
1. A valid ejb jar requires at least one session, entity (1.x/2.x style), or
message driven bean.
2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar.
3. If the jar file contains valid EJBs which are annotated with EJB component
level annotations (@Stateless, @Stateful, @MessageDriven), please check
server.log to see whether the annotations were processed properly.
at
com.sun.enterprise.deployment.util.EjbBundleValidator.accept(EjbBundleValidator.java:95)
at
com.sun.enterprise.deployment.util.ApplicationValidator.accept(ApplicationValidator.java:82)
at
com.sun.enterprise.deployment.EjbBundleDescriptor.visit(EjbBundleDescriptor.java:729)
at com.sun.enterprise.deployment.Application.visit(Application.java:1754)
at
com.sun.enterprise.deployment.archivist.ApplicationArchivist.validate(ApplicationArchivist.java:470)
at
com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:790)
at
com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:744)
at com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:349)
... 32 more
2007.07.20 19:17:52
com.sun.enterprise.deployment.phasing.PEDeploymentService$AuditInfo reportEnd
INFO: Deployment by user Unknown of module ctg-main (type=Application) failed,
elapsed time 484 ms
2007.07.20 19:17:52 com.sun.enterprise.deployment.autodeploy.AutoDeployer
parseResult
SEVERE: "DPL8011: autodeployment failure while deploying the application : Error
loading deployment descriptors for module [ctg-main] – Invalid ejb jar
[jboss-seam.jar]: it contains zero ejb.
Note:
1. A valid ejb jar requires at least one session, entity (1.x/2.x style), or
message driven bean.
2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar.
3. If the jar file contains valid EJBs which are annotated with EJB component
level annotations (@Stateless, @Stateful, @MessageDriven), please check
server.log to see whether the annotations were processed properly.
"
2007.07.20 19:17:52 com.sun.enterprise.deployment.autodeploy.AutoDeployer
markFileAfterDeployment
INFO: [AutoDeploy] Autodeploy failed :
C:\appservers\glassfish\domains\domain1\autodeploy\ctg-main.ear.

When I deploy ear as an archive everything works fine.



Hong Zhang added a comment - 20/Jul/07 10:35 AM

Downgrade this to P2 as there is always the workaround of deploying with archive
unexploded.
Can you attach your application (or a simple test case) with steps to reproduce
the problem? We have unit test cases covering similar scenarios, so there might
be something special with your application that we need to look into.


Hong Zhang added a comment - 20/Jul/07 10:35 AM

->P2 as stated in previous comments


Hong Zhang added a comment - 20/Jul/07 10:38 AM

Looking at the stack trace again, it seems to treat the jboss-seam.jar as a ejb
jar. Was this jar specified as ejb jar explicitly in the application.xml? Does
this jar contain actual ejb: a valid ejb-jar.xml or ejb component level
annotations (@Stateless, @Stateful, @MessageDriven?

Again attaching the application would help us look into the problem further.
Thanks.


Hong Zhang added a comment - 20/Jul/07 03:06 PM

Actually as the reported problem is only for the specific format of the
directory deployment and we are post-beta, move to the bug to P3 (fix for FCS).

If the application.xml declares the jboss-seam.jar as ejb jar while it's not,
please fix the application.xml and try again.


gfbugbridge added a comment - 20/Jul/07 05:01 PM

<BT6583661>


ivicac added a comment - 23/Jul/07 02:38 PM

Actually jboss-seam.jar is ejb beacuse it has same session beans. When I deploy
my application as an archive everything works fine. When I remove jboss-seam
definition from the application.xml then application works in exploded mode, too
but then I have to change configuration for jboss-seam and this is not good.
Obviously the problem is that for some reason, you cannot mix exploded and
archived submodules in exploded deployment of an ear. This is my conclusion.


Hong Zhang added a comment - 23/Jul/07 06:04 PM

If jboss-seam.jar is indeed an ejb jar, is it declared in application.xml as an
ejb module? If so, is it declared in a similar way as ctg-main-ejb.jar?

If the exploded directories are created by MyEclipse, I am wondering why the
ctg-main-ejb.jar is exploded but not jboss-seam.jar.

You are right that we don't currently support deployment of mixed archive and
exploded submodules in an exploded directory. That has not been a common use case.

If jboss-seam.jar and ctg-main-ejb.jar are declared in a similar way in
application.xml and MyEclipse exploded one but not the other, it's something
needs to be fixed from MyEclipse side.

Could you try to manually explode jboss-seam.jar in a similar way as
ctg-main-ejb.jar and see if it works?


ivicac added a comment - 23/Jul/07 11:59 PM

jboss-seam.jar is library from JBoss. It is their framework. So, I have putted
it in my exploded archive because I need it. As you can see it is a case where I
am developing my ejbs but I am using ejbs from others, too. So I would say it
could be a common use case. Primarily I am using exploded deployment because my
development is faster. MyEclipse only deploys my changes, not everything. I can
try explode jboss-seam.jar and see what will happen, but this is not very common.


ivicac added a comment - 24/Jul/07 05:11 AM

And I think that you could improve a little bit deployment. As I can see yo are
first trying to deploy module as a zip file and if an exception occur you are
switching to exploded deployment and operation goes from the begining. I think
you should first find out is submodule a zip file or directory and then use a
properly deployment.


Sanjeeb Sahoo added a comment - 24/Jul/07 07:15 AM

added myself to cc list.


Hong Zhang added a comment - 24/Jul/07 12:46 PM

Thanks for the explanation, now I understand your use case better. As I said,
this has not been a common use case before where the archive and exploded
directory were mixed, but we will take a look at this in the next release as a
potential improvement.


ivicac added a comment - 25/Jul/07 02:29 AM

And what about recognizing what type submodule is: zip file or directory. I
think it would accelerate deployment.


Hong Zhang added a comment - 25/Jul/07 06:55 AM

Yes, this is something we need to do if we were to support the mixed exploded
directory/archive directory deployment. Right now, there is no complication: we
explode the archive if it's in archive format, and we don't do the exploding if
it's directory.


ivicac added a comment - 26/Jul/07 01:48 AM

You didn't understand me. I was talking about exploded deployment. When you have
.war or .jar as a prefix(ebven if it is already directory) you are first trying
to unzip it even it is already a directory. After excpetion you conclude it is a
directory and then go from the start with deployment of the directory. you
should first check if it is already a directory then bypass unzip operation and
go straight to deployment.


Hong Zhang added a comment - 08/Nov/07 08:09 AM

look in v3.


vince kraemer added a comment - 15/Jan/08 01:03 PM

I think the user is telling us that the deployment code is using exceptions for
flow control in the comments dated: Tue Jul 24 12:11:35 +0000 2007; Wed Jul 25
09:29:45 +0000 2007; Thu Jul 26 08:48:02 +0000 2007

Did you want that logged as another issue or has it been addressed already?


vince kraemer added a comment - 15/Jan/08 01:20 PM

get on the cc list


fabriciolemos added a comment - 08/Jun/09 07:39 AM

Is there any workaround for this bug or any other way to have hot deployment
with GlassFish + Seam + Eclipse?


Tom Mueller added a comment - 06/Mar/12 09:56 PM

Bulk update to change fix version to "not determined" for all issues still open but with a fix version for a released version.