[jboss-user] [Installation, Configuration & DEPLOYMENT] - Unwanted deployment of the shared STLBs

havramm do-not-reply at jboss.com
Tue Oct 7 05:39:15 EDT 2008


We have one shared library that contains several STLBs. This library needs to be deployed either as single EJB-JAR or
as shared JAR from which STLBs will be deployed using XML descriptors.

In the case when we need to deploy same STLB several times (using ejb-jar.xml) under different names we are using following structure of EAR:

+-test.ear
  | |
  | +-META-INF
  | | +-MANIFEST.INF
  | | +-application.xml                 (1)
  | |
  | +-depl.jar
  | | +-META-INF
  | |   +-MANIFEST.MF
  | |   +-ejb-jar.xml                   (2)
  | |
  | +-lib
  |   +-shared-ejbs.jar
  |     +-META-INF
  |     | +-MANIFEST.MF
  |     |
  |     +-test
  |       +-SharedLocal.class           (3)
  |       +-SharedBean.class            (4)

With following contents:

application.xml (1):

<?xml version="1.0" encoding="UTF-8"?>
  | <application xmlns="http://java.sun.com/xml/ns/javaee"
  | 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  | 	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd"
  | 	version="5">
  |   <description>SDMS Enterprise Application</description>
  |   <display-name>test-ear</display-name>
  |   <module>
  |     <ejb>depl.jar</ejb>
  |   </module>
  | </application>

ejb-jar.xml (2):

<?xml version="1.0" encoding="UTF-8"?>
  | <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
  | 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  | 	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
  | 	version="3.0">
  | 	<enterprise-beans>
  | 		
  | 		<session>
  | 			<ejb-name>FirstSharedBean</ejb-name>
  | 			<ejb-class>test.SharedBean</ejb-class>
  | 		</session>
  | 		
  | 		<session>
  | 			<ejb-name>SecondSharedBean</ejb-name>
  | 			<ejb-class>test.SharedBean</ejb-class>
  | 		</session>
  | 		
  | 	</enterprise-beans>
  | </ejb-jar>

SharedLocal.class (3):


  | package test;
  | 
  | import javax.ejb.Local;
  | 
  | @Local
  | public interface SharedLocal {
  | 	String sayHello();
  | }
  | 

SharedBean.class (4):


  | package test;
  | 
  | import javax.ejb.Stateless;
  | 
  | @Stateless
  | public class SharedBean implements SharedLocal {
  | 	String sayHello() {
  | 		return "Hello, World!";
  | 	}
  | }
  | 

Using this approach we have not problems with JBoss v4.2.2 and v4.2.3 - one shared STLB has been deployed under two different names.
These days we are testing our deployments on JBoss v5.0.0.CR2 and we have noticed that our shared STLB is deployed not two but three times -
beside two explicitly deployed (FirstSharedBean and SecondSharedBean) there is one more instance deployed as SharedBean:

http://img383.imageshack.us/img383/4513/sshot1be6.jpg
[Click on link to see the JNDI View...]

Also, here is the log of deployment:

11:21:06,185 WARN  [EjbMetadataJndiPolicyDecoratorDeployer] Defaulting to DefaultJndiBindingPolicy of "org.jboss.metadata.ejb.jboss.jndipolicy.plugins.BasicJndiBindingPolicy" for Session Bean SharedBean
  | 11:21:06,185 WARN  [EjbMetadataJndiPolicyDecoratorDeployer] Defaulting to DefaultJndiBindingPolicy of "org.jboss.metadata.ejb.jboss.jndipolicy.plugins.BasicJndiBindingPolicy" for Session Bean FirstSharedBean
  | 11:21:06,185 WARN  [EjbMetadataJndiPolicyDecoratorDeployer] Defaulting to DefaultJndiBindingPolicy of "org.jboss.metadata.ejb.jboss.jndipolicy.plugins.BasicJndiBindingPolicy" for Session Bean SecondSharedBean
  | 11:21:06,205 INFO  [JBossASKernel] Created KernelDeployment for: test-ear.ear
  | 11:21:06,205 INFO  [JBossASKernel] installing bean: jboss.j2ee:ear=test-ear.ear,jar=test-ear.ear,name=SharedBean,service=EJB3
  | 11:21:06,205 INFO  [JBossASKernel]   with dependencies:
  | 11:21:06,205 INFO  [JBossASKernel]   and demands:
  | 11:21:06,205 INFO  [JBossASKernel] 	jboss.ejb:service=EJBTimerService
  | 11:21:06,205 INFO  [JBossASKernel]   and supplies:
  | 11:21:06,205 INFO  [JBossASKernel] 	Class:test.SharedLocal
  | 11:21:06,205 INFO  [JBossASKernel] 	jndi:SharedBean/remote
  | 11:21:06,205 INFO  [JBossASKernel] 	jndi:SharedBean/local
  | 11:21:06,205 INFO  [JBossASKernel] 	jndi:SharedBean/local-test.SharedLocal
  | 11:21:06,205 INFO  [JBossASKernel] Added bean(jboss.j2ee:ear=test-ear.ear,jar=test-ear.ear,name=SharedBean,service=EJB3) to KernelDeployment of: test-ear.ear
  | 11:21:06,247 INFO  [JBossASKernel] Created KernelDeployment for: depl.jar
  | 11:21:06,247 INFO  [JBossASKernel] installing bean: jboss.j2ee:ear=test-ear.ear,jar=depl.jar,name=FirstSharedBean,service=EJB3
  | 11:21:06,247 INFO  [JBossASKernel]   with dependencies:
  | 11:21:06,247 INFO  [JBossASKernel]   and demands:
  | 11:21:06,247 INFO  [JBossASKernel] 	jboss.ejb:service=EJBTimerService
  | 11:21:06,247 INFO  [JBossASKernel]   and supplies:
  | 11:21:06,247 INFO  [JBossASKernel] 	Class:test.SharedLocal
  | 11:21:06,247 INFO  [JBossASKernel] 	jndi:test-ear/FirstSharedBean/local
  | 11:21:06,247 INFO  [JBossASKernel] 	jndi:test-ear/FirstSharedBean/local-test.SharedLocal
  | 11:21:06,247 INFO  [JBossASKernel] 	jndi:test-ear/FirstSharedBean/remote
  | 11:21:06,247 INFO  [JBossASKernel] Added bean(jboss.j2ee:ear=test-ear.ear,jar=depl.jar,name=FirstSharedBean,service=EJB3) to KernelDeployment of: depl.jar
  | 11:21:06,248 INFO  [JBossASKernel] installing bean: jboss.j2ee:ear=test-ear.ear,jar=depl.jar,name=SecondSharedBean,service=EJB3
  | 11:21:06,248 INFO  [JBossASKernel]   with dependencies:
  | 11:21:06,248 INFO  [JBossASKernel]   and demands:
  | 11:21:06,248 INFO  [JBossASKernel] 	jboss.ejb:service=EJBTimerService
  | 11:21:06,248 INFO  [JBossASKernel]   and supplies:
  | 11:21:06,248 INFO  [JBossASKernel] 	jndi:test-ear/SecondSharedBean/remote
  | 11:21:06,248 INFO  [JBossASKernel] 	Class:test.SharedLocal
  | 11:21:06,248 INFO  [JBossASKernel] 	jndi:test-ear/SecondSharedBean/local-test.SharedLocal
  | 11:21:06,248 INFO  [JBossASKernel] 	jndi:test-ear/SecondSharedBean/local
  | 11:21:06,248 INFO  [JBossASKernel] Added bean(jboss.j2ee:ear=test-ear.ear,jar=depl.jar,name=SecondSharedBean,service=EJB3) to KernelDeployment of: depl.jar
  | 11:21:06,307 INFO  [SessionSpecContainer] Starting jboss.j2ee:ear=test-ear.ear,jar=test-ear.ear,name=SharedBean,service=EJB3
  | 11:21:06,307 INFO  [EJBContainer] STARTED EJB: test.SharedBean ejbName: SharedBean
  | 11:21:06,307 WARN  [SessionSpecContainer] Populating JBoss-specific annotation metadata manually until done by deployers: jboss.j2ee:ear=test-ear.ear,jar=test-ear.ear,name=SharedBean,service=EJB3
  | 11:21:06,385 INFO  [SessionSpecContainer] Starting jboss.j2ee:ear=test-ear.ear,jar=depl.jar,name=FirstSharedBean,service=EJB3
  | 11:21:06,385 INFO  [EJBContainer] STARTED EJB: test.SharedBean ejbName: FirstSharedBean
  | 11:21:06,385 WARN  [SessionSpecContainer] Populating JBoss-specific annotation metadata manually until done by deployers: jboss.j2ee:ear=test-ear.ear,jar=depl.jar,name=FirstSharedBean,service=EJB3
  | 11:21:06,464 INFO  [SessionSpecContainer] Starting jboss.j2ee:ear=test-ear.ear,jar=depl.jar,name=SecondSharedBean,service=EJB3
  | 11:21:06,465 INFO  [EJBContainer] STARTED EJB: test.SharedBean ejbName: SecondSharedBean
  | 11:21:06,465 WARN  [SessionSpecContainer] Populating JBoss-specific annotation metadata manually until done by deployers: jboss.j2ee:ear=test-ear.ear,jar=depl.jar,name=SecondSharedBean,service=EJB3
  | 

Obviously, deployment strategy within JBoss has been changed (we do not consider which one is "by spec").
Our problem is that we do not want to have such unwanted deployment of our SharedBean - is there anything we can do to prevent implicit deployment
of STLBs from shared libs?


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4180744#4180744

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4180744



More information about the jboss-user mailing list