Praveen's Blog

September 22, 2011

Multi line search and replace using sed

Filed under: Tech stuff — praveenmyls @ 12:51 pm


/abcd/{
N
s/9.4.0/10.5.0-SNAPSHOT/
}

August 19, 2011

Dynamically Typed, Statically Typed, Strongly Typed, Weakly Typed

Filed under: Tech stuff — Tags: , , , — praveenmyls @ 7:30 am

A Programming language can be Dynamically Typed, Statically typed, Strongly Typed and Weakly Typed. Whats the difference?
Dynamically Typed:
There is no type check at compile time. If you pass wrong parameter types to a method, no compilation errors occur. Runtime failures happen. Examples are Ruby, Python.
Statically Typed:
There is type check at compile time. If you pass wrong parameter types to a method, compilation errors occur. Example : Java
Weakly Typed:
If type conversion happens, when you send different parameter to that expected (If possible, ofcourse).
Strongly Typed: NO type conversion happens, when you send different parameter to that expected (If possible, ofcourse).

Ruby is Strongly typed and dynamically typed.

July 19, 2011

Birthday Paradox

Filed under: Puzzles — Tags: , — praveenmyls @ 6:18 pm

Whats the birthday paradox?
How many people should be there in a room so that there is 50% chance that two people share the same birthday?

Solution:
Lets assume its not a leap year.
Let P be the probability where none of them share a birthday. Then (1 – P) is the probability where atleast 2 of them share a birthday.

For n people, if they do not share a birthday, the first one can have 365 options, the second one 364..etc etc
hence, P = ( 365 * 364 * 363 * ….. * (365 – n) ) / 365^n.

Here, I need some kind of a program to figure out the n. The answer came out to be 23. P came to be 0.49. 1-P = 0.50. Thats 50% chance.

September 22, 2010

java getResource()

Filed under: Tech stuff — Tags: , , , , , — praveenmyls @ 7:23 pm

try {
	    System.out.println("TestFindResource.class.getClass().getResource(\"config/x.prop\");");
	    URL url = TestFindResource.class.getClass().getResource("config/x.prop");
	    p.load(url.openStream());
	} catch (Exception e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}

TestFindResource.class.getClass().getResource(“config/x.prop”);
java.lang.NullPointerException
at TestFindResource.main(TestFindResource.java:11)

	try {
	    System.out.println("TestFindResource.class.getClass().getResource(/config/x.prop)");
	    URL url =  TestFindResource.class.getClass().getResource("/config/x.prop");
	    p.load(url.openStream());
	} catch (Exception e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}

TestFindResource.class.getClass().getResource(/config/x.prop)

	try {
	    System.out.println("TestFindResource.class.getClass().getResourceAsStream(config/x.prop)");
	    p.load( TestFindResource.class.getClass().getResourceAsStream("config/x.prop"));
	} catch (Exception e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}

TestFindResource.class.getClass().getResourceAsStream(config/x.prop)
java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at TestFindResource.main(TestFindResource.java:26)

	try {
	    System.out.println("TestFindResource.class.getClass().getResourceAsStream(/config/x.prop)");
	    p.load( TestFindResource.class.getClass().getResourceAsStream("/config/x.prop"));
	} catch (Exception e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}

TestFindResource.class.getClass().getResourceAsStream(/config/x.prop)

	try {
	    System.out.println("TestFindResource.class.getClassLoader().getResource(config/x.prop)");
	    URL url = TestFindResource.class.getClassLoader().getResource("config/x.prop");
	    p.load(url.openStream());
	} catch (Exception e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}

TestFindResource.class.getClassLoader().getResource(config/x.prop)

	try {
	    System.out.println("TestFindResource.class.getClassLoader().getResource(/config/x.prop)");
	    URL url = TestFindResource.class.getClassLoader().getResource("/config/x.prop");
	    p.load(url.openStream());
	} catch (Exception e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}

TestFindResource.class.getClassLoader().getResource(/config/x.prop)
java.lang.NullPointerException
at TestFindResource.main(TestFindResource.java:49)
java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at TestFindResource.main(TestFindResource.java:63)

	try {
	    System.out.println("TestFindResource.class.getClassLoader().getResourceAsStream(config/x.prop)");
	    p.load(TestFindResource.class.getClassLoader().getResourceAsStream("config/x.prop"));
	} catch (Exception e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}

TestFindResource.class.getClassLoader().getResourceAsStream(config/x.prop)

	try {
	    System.out.println("TestFindResource.class.getClassLoader().getResourceAsStream(/config/x.prop)");
	    p.load( TestFindResource.class.getClassLoader().getResourceAsStream("/config/x.prop"));
	} catch (Exception e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}

TestFindResource.class.getClassLoader().getResourceAsStream(/config/x.prop)

	try {
	    Enumeration resources = TestFindResource.class.getClassLoader().getResources("config/x.prop");
	    while(resources.hasMoreElements()){
		System.out.println(resources.nextElement());
	    }
	   
	} catch (Exception e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}

file:/JBossClassloading/CommonLibrary/target/test-classes/config/x.prop

	try {
	    Enumeration resources = TestFindResource.class.getClassLoader().getResources("/config/x.prop");
	    while(resources.hasMoreElements()){
		System.out.println(resources.nextElement());
	    }
	} catch (Exception e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}
	
    }
}

Nothing prints.

jboss-classloading.xml usecases

Filed under: Tech stuff — Tags: , , , — praveenmyls @ 6:28 pm

Two EJBs.

ConsumerEJB:

@Stateless
@LocalBinding(jndiBinding="service/ProducerServiceBean")
public class ProducerServiceBean implements ProducerServiceLocal,ProducerServiceRemote{
    private Logger logger = Logger.getLogger("ProducerServiceBean");
    
    public String sayHello() {
	logger.info("Called ProducerServiceBean Hello");
	return "Hello";
    }

}

ProducerEJB:

@Stateless
public class ConsumerServiceBean implements ConsumerServiceLocal, ConsumerServiceRemote {

    private Log logger = LogFactory.getLog("ConsumerServiceBean"); 
    
    public boolean callTheOtheEJB() {
	ProducerService myStateless = lookup(ProducerService.class, "service/ProducerServiceBean", true);
	logger.info("Called myStateless sayHello = "+  myStateless.sayHello());
	return true;
    }
}

UseCases:

1. jboss-classloading.xml set in ProducerEJB and ConsumerEJB. Domain : IsolatedDomain, ParentDomain: DefaultDomain.

     

2010-09-14 16:17:13,620 INFO  [ProducerServiceBean] (WorkerThread#0[127.0.0.1:63882]) Called ProducerServiceBean Hello
     2010-09-14 16:17:13,620 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:63882]) Called myStateless sayHello = Hello

2. jboss-classloading.xml set in ProducerEJB, NOT in ConsumerEJB. Domain : IsolatedDomain, ParentDomain: DefaultDomain.

<classloading xmlns="urn:jboss:classloading:1.0"
              domain="IsolatedDomain"
              export-all="NON_EMPTY"
              import-all="true">
</classloading>

ProducerEJB cannot access ConsumerEJB. 

Exception in thread “main” javax.ejb.EJBException: Unexpected Error
java.lang.NoClassDefFoundError: com/producer/service/ProducerService
at com.consumer.service.bean.ConsumerServiceBean.callTheOtheEJB(ConsumerServiceBean.java:22)

Caused by: java.lang.ClassNotFoundException: com.producer.service.ProducerService from BaseClassLoader@1aef201d{VFSClassLoaderPolicy@49255dbb{name=vfszip:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar/ domain=ClassLoaderDomain@10439d3b{name=DefaultDomain parentPolicy=BEFORE parent=org.jboss.bootstrap.NoAnnotationURLClassLoader@4b9a0203} roots=[MemoryContextHandler@875349377[path= context=vfsmemory://h5tb6l-2bxb67-ge39xz9q-1-ge3dbdx1-a1 real=vfsmemory://h5tb6l-2bxb67-ge39xz9q-1-ge3dbdx1-a1], DelegatingHandler@1733997289[path=ConsumerEJB-0.0.1-SNAPSHOT.jar context=file:/jboss-5.1.0.GA/server/default/deploy/ real=file:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar]]  delegates=null exported=[com.consumer.service.bean, com.consumer.service, META-INF.maven.Examples.ConsumerEJB, META-INF] NON_EMPTY}}
at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:448)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)

3. ProducerEJB: Domain : DefaultDomain, ParentDomain: DefaultDomain. 
     ConsumerEJB:   Domain : IsolatedDomain, ParentDomain: DefaultDomain.

Requirements are resolved in hierarchy. Hence works. ConsumerEJB finds ProducerEJB.

2010-09-14 16:51:00,404 INFO  [ProducerServiceBean] (WorkerThread#0[127.0.0.1:64147]) Called ProducerServiceBean Hello
2010-09-14 16:51:00,405 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:64147]) Called myStateless sayHello = Hello
2010-09-14 16:51:00,405 INFO  [ProducerServiceBean] (WorkerThread#0[127.0.0.1:64147]) Called ProducerServiceBean Hello
2010-09-14 16:51:00,405 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:64147]) Trying to access ProducerServiceBean Directly : Hello

4. Added wrong pkg in ProducerEJB: jboss-cl.xml (Should have been com.producer.service). Hides OSGI style.

<classloading xmlns="urn:jboss:classloading:1.0" domain="DefaultDomain"
	export-all="NON_EMPTY" import-all="true">
	<capabilities>
		<package name="com.consumer.service" />
	</capabilities>
</classloading>

Exception in thread “main” javax.ejb.EJBException: Unexpected Error
java.lang.NoClassDefFoundError: com/producer/service/ProducerService
at com.consumer.service.bean.ConsumerServiceBean.callTheOtheEJB(ConsumerServiceBean.java:23)
Caused by: java.lang.ClassNotFoundException: com.producer.service.ProducerService from BaseClassLoader@216b907c{VFSClassLoaderPolicy@1cdace08{name=vfszip:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar/ domain=ClassLoaderDomain@76640885{name=IsolatedDomain parentPolicy=BEFORE parent=ClassLoaderDomain@10439d3b{DefaultDomain}} roots=[MemoryContextHandler@1628208644[path= context=vfsmemory://h5tb6l-2bxb67-ge39xz9q-1-ge3faend-a9 real=vfsmemory://h5tb6l-2bxb67-ge39xz9q-1-ge3faend-a9], DelegatingHandler@1733997289[path=ConsumerEJB-0.0.1-SNAPSHOT.jar context=file:/jboss-5.1.0.GA/server/default/deploy/ real=file:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar]]  delegates=null exported=[com.consumer.service.bean, com.consumer.service, META-INF.maven.Examples.ConsumerEJB, META-INF] NON_EMPTY}}
at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:448

5. ProducerEJB: jboss-cl.xml

<classloading xmlns="urn:jboss:classloading:1.0" domain="DefaultDomain"
	export-all="NON_EMPTY" import-all="true">
	<capabilities>
		<package name="com.producer.service" />
	</capabilities>
</classloading>

2010-09-14 17:05:09,371 INFO  [ProducerServiceBean] (WorkerThread#0[127.0.0.1:64257]) Called ProducerServiceBean Hello
2010-09-14 17:05:09,371 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:64257]) Called myStateless sayHello = Hello

Exception in thread “main” javax.ejb.EJBException: Unexpected Error
java.lang.NoClassDefFoundError: com/producer/service/bean/ProducerServiceBean
at com.consumer.service.bean.ConsumerServiceBean.callTheOtheEJB(ConsumerServiceBean.java:25)

Caused by: java.lang.ClassNotFoundException: com.producer.service.bean.ProducerServiceBean from BaseClassLoader@37cbcec3{VFSClassLoaderPolicy@257380d3{name=vfszip:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar/ domain=ClassLoaderDomain@62ed088a{name=IsolatedDomain parentPolicy=BEFORE parent=ClassLoaderDomain@10439d3b{DefaultDomain}} roots=[MemoryContextHandler@1108258778[path= context=vfsmemory://h5tb6l-2bxb67-ge39xz9q-1-ge3fjo8v-aa real=vfsmemory://h5tb6l-2bxb67-ge39xz9q-1-ge3fjo8v-aa], DelegatingHandler@1733997289[path=ConsumerEJB-0.0.1-SNAPSHOT.jar context=file:/jboss-5.1.0.GA/server/default/deploy/ real=file:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar]]  delegates=null exported=[com.consumer.service.bean, com.consumer.service, META-INF.maven.Examples.ConsumerEJB, META-INF] NON_EMPTY}}

6. Different domains for ProducerEJB and ConsumerEJB. The classes are not visible to each other.
ProducerEJB:

<classloading xmlns="urn:jboss:classloading:1.0" domain="ConsumerDomain"
	export-all="NON_EMPTY" import-all="true">
	<capabilities>
		<package name="com.producer.service" />
	</capabilities>
</classloading>

ConsumerEJB:

<classloading xmlns="urn:jboss:classloading:1.0"
              domain="ProducerDomain"
              export-all="NON_EMPTY"
              import-all="true">
</classloading>

Exception in thread “main” javax.ejb.EJBException: Unexpected Error
java.lang.NoClassDefFoundError: com/producer/service/ProducerService
at com.consumer.service.bean.ConsumerServiceBean.callTheOtheEJB(ConsumerServiceBean.java:23)

7. Invalid “requirements” tag in ConsumerEJB.

<classloading xmlns="urn:jboss:classloading:1.0" domain="ProducerDomain"
	export-all="NON_EMPTY" import-all="true">
	<requirements>
		<module name="CommonLibrary.jar"/>
	</requirements>
</classloading>

DEPLOYMENTS MISSING DEPENDENCIES:
  Deployment “vfszip:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar/” is missing the following dependencies:
    Dependency “” (should be in state “ClassLoader”, but is actually in state “** UNRESOLVED ModuleRequirement{CommonLibrary.jar [0.0.0,?)} **")

DEPLOYMENTS IN ERROR:
  Deployment "" is in error due to the following reason(s): ** UNRESOLVED ModuleRequirement{CommonLibrary.jar [0.0.0,?)} **

at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:993)

8. Added correct "requirements" tag in ConsumerEJB.

<classloading xmlns="urn:jboss:classloading:1.0" domain="ProducerDomain"
	export-all="NON_EMPTY" import-all="true">
	<requirements>
		<module name="CommonLibrary-0.0.1-SNAPSHOT.jar"/>
	</requirements>
</classloading>

Exception in thread “main” javax.ejb.EJBException: Unexpected Error
java.lang.NoClassDefFoundError: com/producer/service/ProducerService
at com.consumer.service.bean.ConsumerServiceBean.callTheOtheEJB(ConsumerServiceBean.java:25)

Caused by: java.lang.ClassNotFoundException: com.producer.service.ProducerService from BaseClassLoader@1ee35bb2{VFSClassLoaderPolicy@609912f5{name=vfszip:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar/ domain=ClassLoaderDomain@76a45568{name=ProducerDomain parentPolicy=BEFORE parent=ClassLoaderDomain@470794d4{DefaultDomain}} roots=[MemoryContextHandler@1638646878[path= context=vfsmemory://h5tb6l-w1cn9l-ge4g82ce-1-ge4g8rkg-28 real=vfsmemory://h5tb6l-w1cn9l-ge4g82ce-1-ge4g8rkg-28], DelegatingHandler@1710140062[path=ConsumerEJB-0.0.1-SNAPSHOT.jar context=file:/jboss-5.1.0.GA/server/default/deploy/ real=file:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar]]  delegates=[FilteredDelegateLoader@53e9296a{delegate=VFSClassLoaderPolicy@4ba56ca0{vfszip:/jboss-5.1.0.GA/server/default/deploy/CommonLibrary-0.0.1-SNAPSHOT.jar/}}] exported=[com.consumer.service.bean, com.consumer.service, META-INF.maven.Examples.ConsumerEJB, META-INF] NON_EMPTY}}

9. Added ProducerEJB-0.0.1-SNAPSHOT to module requirements tag. ProducerEJB is deployed after ConsumerEJB, hence deployment fails.

<classloading xmlns="urn:jboss:classloading:1.0" domain="ProducerDomain"
	export-all="NON_EMPTY" import-all="true">
	<requirements>
		<module name="CommonLibrary-0.0.1-SNAPSHOT.jar"/>
		<module name="ProducerEJB-0.0.1-SNAPSHOT.jar"/>
	</requirements>
</classloading>

DEPLOYMENTS MISSING DEPENDENCIES:
  Deployment “vfszip:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar/” is missing the following dependencies:
    Dependency “” (should be in state “ClassLoader”, but is actually in state “** UNRESOLVED ModuleRequirement{ProducerEJB-0.0.1-SNAPSHOT.jar [0.0.0,?)} **")

DEPLOYMENTS IN ERROR:
  Deployment "" is in error due to the following reason(s): ** UNRESOLVED ModuleRequirement{ProducerEJB-0.0.1-SNAPSHOT.jar [0.0.0,?)} **

10. Add another jar to deploy folder. Not incl in requirements didnt effect it. The class was still visible to ConsumerEJB. Please note that CommonLibrary2-0.0.1-SNAPSHOT isnt part of the requirements and import-all is false. Both the libraries dont have jboss-classloading.xml.

<classloading xmlns="urn:jboss:classloading:1.0" domain="IsolatedDomain"
	export-all="NON_EMPTY" import-all="false">
	<requirements>
		<module name="CommonLibrary-0.0.1-SNAPSHOT.jar"/>
	</requirements>
	<capabilities>
		<package name="com.consumer.service" />
	</capabilities>
</classloading>

Exception in thread “main” javax.ejb.EJBException: Unexpected Error
java.lang.NoClassDefFoundError: com/producer/service/ProducerService
at com.consumer.service.bean.ConsumerServiceBean.callTheOtheEJB(ConsumerServiceBean.java:27)
Caused by: java.lang.ClassNotFoundException: com.producer.service.ProducerService from BaseClassLoader@7febaf45{VFSClassLoaderPolicy@4a401c9f{name=vfszip:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar/ domain=ClassLoaderDomain@4873269b{name=IsolatedDomain parentPolicy=BEFORE parent=ClassLoaderDomain@10439d3b{DefaultDomain}} roots=[MemoryContextHandler@924266702[path= context=vfsmemory://h5tb6l-bdtj3x-ge4jqt6i-1-ge4l4acd-a4 real=vfsmemory://h5tb6l-bdtj3x-ge4jqt6i-1-ge4l4acd-a4], DelegatingHandler@1206181996[path=ConsumerEJB-0.0.1-SNAPSHOT.jar context=file:/jboss-5.1.0.GA/server/default/deploy/ real=file:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar]]  delegates=[FilteredDelegateLoader@538540a3{delegate=VFSClassLoaderPolicy@768179c2{vfszip:/jboss-5.1.0.GA/server/default/deploy/CommonLibrary-0.0.1-SNAPSHOT.jar/}}] exported=[com.consumer.service]NON_EMPTY}}

2010-09-15 12:28:55,246 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:55994]) new CommonUtils().todaysDate() = Wed Sep 15 12:28:55 PDT 2010
2010-09-15 12:28:55,247 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:55994]) new CommonUtils2().todaysDate() = From222 :Wed Sep 15 12:28:55 PDT 2010

11. Adding jboss-classloading.xml to CommonLibrary-0.0.1-SNAPSHOT and CommonLibrary2-0.0.1-SNAPSHOT , ConsumerEJB didnt add any requirements and import-all was FALSE.

Exception in thread “main” javax.ejb.EJBException: Unexpected Error
java.lang.NoClassDefFoundError: com/common/library/CommonUtils
at com.consumer.service.bean.ConsumerServiceBean.callTheOtheEJB(ConsumerServiceBean.java:25)

12.  Adding jboss-classloading.xml to CommonLibrary-0.0.1-SNAPSHOT and CommonLibrary2-0.0.1-SNAPSHOT , ConsumerEJB didnt add any requirements and import-all was TRUE. ConsumerEJB can access CommonLibraries.

2010-09-15 12:40:11,037 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:56095]) new CommonUtils().todaysDate() = Wed Sep 15 12:40:11 PDT 2010
2010-09-15 12:40:11,039 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:56095]) new CommonUtils2().todaysDate() = From222 :Wed Sep 15 12:40:11 PDT 2010

13.  Adding jboss-classloading.xml to CommonLibrary-0.0.1-SNAPSHOT and CommonLibrary2-0.0.1-SNAPSHOT , ConsumerEJB adds CommonLibrary-0.0.1-SNAPSHOT as requirements and import-all was FALSE. ConsumerEJB can access CommonLibrary, but cannot access CommonLibary2.

<classloading xmlns="urn:jboss:classloading:1.0" domain="IsolatedDomain"
	export-all="NON_EMPTY" import-all="false">
	<requirements>
		<module name="CommonLibrary-0.0.1-SNAPSHOT.jar"/>
	</requirements>
	<capabilities>
		<package name="com.consumer.service" />
	</capabilities>
</classloading>

2010-09-15 12:43:06,435 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:56118]) new CommonUtils().todaysDate() = Wed Sep 15 12:43:06 PDT 2010
Exception in thread “main” javax.ejb.EJBException: Unexpected Error
java.lang.NoClassDefFoundError: com/common2/library/CommonUtils
at com.consumer.service.bean.ConsumerServiceBean.callTheOtheEJB(ConsumerServiceBean.java:26)
Caused by: java.lang.ClassNotFoundException: com.common2.library.CommonUtils from BaseClassLoader@4a8c7267{VFSClassLoaderPolicy@4aaaee6d{name=vfszip:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar/ domain=ClassLoaderDomain@3381423d{name=IsolatedDomain parentPolicy=BEFORE parent=ClassLoaderDomain@10439d3b{DefaultDomain}} roots=[MemoryContextHandler@470506599[path= context=vfsmemory://h5tb6l-bdtj3x-ge4jqt6i-1-ge4lmb30-ae real=vfsmemory://h5tb6l-bdtj3x-ge4jqt6i-1-ge4lmb30-ae], DelegatingHandler@1206181996[path=ConsumerEJB-0.0.1-SNAPSHOT.jar context=file:/jboss-5.1.0.GA/server/default/deploy/ real=file:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar]]  delegates=[FilteredDelegateLoader@2ddf7c93{delegate=VFSClassLoaderPolicy@f272e4a{vfszip:/jboss-5.1.0.GA/server/default/deploy/CommonLibrary-0.0.1-SNAPSHOT.jar/}}] exported=[com.consumer.service]NON_EMPTY}}

14. Adding jboss-classloading.xml to CommonLibrary-0.0.1-SNAPSHOT and CommonLibrary2-0.0.1-SNAPSHOT , ConsumerEJB adds CommonLibrary-0.0.1-SNAPSHOT,CommonLibrary2-0.0.1-SNAPSHOT  as requirements and import-all was FALSE. ConsumerEJB  doesnt deploy.

2010-09-15 14:27:57,455 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (main) Error resolving dependencies for ClassLoader: name=vfszip:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar/ state=Describe mode=Manual requiredState=ClassLoader
java.lang.IllegalStateException: VFSDeploymentClassLoaderPolicyModule CommonLibrary2-0.0.1-SNAPSHOT.jar:0.0.0 cannot be added because it is exports package META-INF which conflicts with VFSDeploymentClassLoaderPolicyModule CommonLibrary-0.0.1-SNAPSHOT.jar:0.0.0
at org.jboss.classloading.spi.dependency.ClassLoadingSpace.join(ClassLoadingSpace.java:223)
at org.jboss.classloading.spi.dependency.ClassLoadingSpace.joinAndResolve(ClassLoadingSpace.java:120)

15. Adding jboss-classloading.xml to CommonLibrary-0.0.1-SNAPSHOT and CommonLibrary2-0.0.1-SNAPSHOT. Excluding META-INF directory resolves the earlier error @ 14. ConsumerEJB adds CommonLibrary-0.0.1-SNAPSHOT,CommonLibrary2-0.0.1-SNAPSHOT  as requirements and import-all was FALSE. 

<classloading xmlns="urn:jboss:classloading:1.0" domain="IsolatedDomain"
	export-all="NON_EMPTY" import-all="false" excluded="META-INF">
</classloading>

2010-09-15 15:04:09,335 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:57282]) new CommonUtils().todaysDate() = Wed Sep 15 15:04:09 PDT 2010
2010-09-15 15:04:09,336 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:57282]) new CommonUtils2().todaysDate() = From222 :Wed Sep 15 15:04:09 PDT 2010

Exception in thread “main” javax.ejb.EJBException: Unexpected Error
java.lang.NoClassDefFoundError: com/common3/library/CommonUtils
at com.consumer.service.bean.ConsumerServiceBean.callTheOtheEJB(ConsumerServiceBean.java:27)
Caused by: java.lang.ClassNotFoundException: com.common3.library.CommonUtils from BaseClassLoader@2c84d9d{VFSClassLoaderPolicy@2c5f7fd8{name=vfszip:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar/ domain=ClassLoaderDomain@3f78d35f{name=IsolatedDomain parentPolicy=BEFORE parent=ClassLoaderDomain@3aeebf17{DefaultDomain}} roots=[MemoryContextHandler@834819242[path= context=vfsmemory://h5tb6l-tlfjex-ge4qm7bh-1-ge4qmvy9-29 real=vfsmemory://h5tb6l-tlfjex-ge4qm7bh-1-ge4qmvy9-29], DelegatingHandler@1057935256[path=ConsumerEJB-0.0.1-SNAPSHOT.jar context=file:/jboss-5.1.0.GA/server/default/deploy/ real=file:/jboss-5.1.0.GA/server/default/deploy/ConsumerEJB-0.0.1-SNAPSHOT.jar]]  delegates=[FilteredDelegateLoader@4d447e6b{delegate=VFSClassLoaderPolicy@4a65d816{vfszip:/jboss-5.1.0.GA/server/default/deploy/CommonLibrary-0.0.1-SNAPSHOT.jar/}}, FilteredDelegateLoader@4bc7ca6e{delegate=VFSClassLoaderPolicy@3b887b2{vfszip:/jboss-5.1.0.GA/server/default/deploy/CommonLibrary2-0.0.1-SNAPSHOT.jar/}}] exported=[com.consumer.service]NON_EMPTY}}

16. Added new library called ZZLibrary. Added jboss-classloading.xml to it. Excluded META-INF. This is how jboss-cl for ConsumerEJB looks. Works. 

<classloading xmlns="urn:jboss:classloading:1.0" domain="IsolatedDomain"
	export-all="NON_EMPTY" import-all="false">
	<requirements>
		<module name="CommonLibrary-0.0.1-SNAPSHOT.jar"/>
		<module name="CommonLibrary2-0.0.1-SNAPSHOT.jar"/>
		<module name="ZZLibrary-0.0.1-SNAPSHOT.jar"/>
	</requirements>
	<capabilities>
		<package name="com.consumer.service" />
	</capabilities>
</classloading>

2010-09-15 15:11:57,366 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:57354]) new CommonUtils().todaysDate() = Wed Sep 15 15:11:57 PDT 2010
2010-09-15 15:11:57,368 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:57354]) new CommonUtils2().todaysDate() = From222 :Wed Sep 15 15:11:57 PDT 2010
2010-09-15 15:11:57,369 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:57354]) new CommonUtils3().todaysDate() = FromZZLibrary :Wed Sep 15 15:11:57 PDT 2010

Exception in thread “main” javax.ejb.EJBException: Unexpected Error
java.lang.NoClassDefFoundError: com/producer/service/ProducerService
at com.consumer.service.bean.ConsumerServiceBean.callTheOtheEJB(ConsumerServiceBean.java:28)

17. Added ProducerEJB to ConsumerEJB’s requirements. Added ProducerEJB-0.0.1-SNAPSHOT.jar to ProducerEJB capabilities. But that meant, all the packages were imported.
ConsumerEJB:

<classloading xmlns="urn:jboss:classloading:1.0" domain="IsolatedDomain"
	export-all="NON_EMPTY" import-all="false" excluded="META-INF">
	<requirements>
		<module name="CommonLibrary-0.0.1-SNAPSHOT.jar"/>
		<module name="CommonLibrary2-0.0.1-SNAPSHOT.jar"/>
		<module name="ZZLibrary-0.0.1-SNAPSHOT.jar"/>
		<module name="ProducerEJB-0.0.1-SNAPSHOT.jar"/>
	</requirements>
	<capabilities>
		<package name="com.consumer.service" />
	</capabilities>
</classloading>

ProducerEJB:

<classloading xmlns="urn:jboss:classloading:1.0" domain="IsolatedDomain"
	export-all="NON_EMPTY" import-all="true" excluded="META-INF">
	<capabilities>
		<package name="com.producer.service" />
		<module name="ProducerEJB-0.0.1-SNAPSHOT.jar"/>
	</capabilities>
</classloading>

2010-09-15 15:31:26,385 INFO  [ProducerServiceBean] (WorkerThread#0[127.0.0.1:57509]) Called ProducerServiceBean Hello
2010-09-15 15:31:26,385 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:57509]) Called myStateless sayHello = Hello
2010-09-15 15:31:26,386 INFO  [ProducerServiceBean] (WorkerThread#0[127.0.0.1:57509]) Called ProducerServiceBean Hello
2010-09-15 15:31:26,386 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:57509]) Trying to access ProducerServiceBean Directly (new ProducerServiceBean()).sayHello(): Hello

18. Same settings as above, expect added com.producer.service.bean to excluded attribute. Looks like the EJBDeployer didnt find the Bean class.

<classloading xmlns="urn:jboss:classloading:1.0" domain="IsolatedDomain"
	export-all="NON_EMPTY" import-all="true" excluded="META-INF,com.producer.service.bean">
	<capabilities>
		<package name="com.producer.service" />
		<module name="ProducerEJB-0.0.1-SNAPSHOT.jar"/>
	</capabilities>
</classloading>

Caused by: java.lang.ClassNotFoundException: com.producer.service.bean.ProducerServiceBean from BaseClassLoader@37ea14c3{VFSClassLoaderPolicy@68f92ae2{name=vfszip:/jboss-5.1.0.GA/server/default/deploy/ProducerEJB-0.0.1-SNAPSHOT.jar/ domain=ClassLoaderDomain@65a45a7f{name=IsolatedDomain parentPolicy=BEFORE parent=ClassLoaderDomain@6da05bdb{DefaultDomain}} roots=[MemoryContextHandler@1047433541[path= context=vfsmemory://h5tb6l-8a1qj2-ge4rx1ww-1-ge4rxpdu-2a real=vfsmemory://h5tb6l-8a1qj2-ge4rx1ww-1-ge4rxpdu-2a], DelegatingHandler@1292069128[path=ProducerEJB-0.0.1-SNAPSHOT.jar context=file:/jboss-5.1.0.GA/server/default/deploy/ real=file:/jboss-5.1.0.GA/server/default/deploy/ProducerEJB-0.0.1-SNAPSHOT.jar]]  delegates=null exported=[com.producer.service] NON_EMPTY}}
at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:448)

EAR Setting

1. Added ProducerEJB and ConsumerEJB as ejb-jars. And *Libraries as lib/*.

All the jboss-classloading.xml’s have domain=DefaultDomain.

But, JBoss JMX shows a different picture for EJB’s. The Lib jars are present under DefaultDomain. The EJB’s are in a different domain.

2. Removed jboss-classloading.xml’s from all EJB’s and the jars. There seems to be NO seperate domain created. Everything is in DefaultDomain.

See, No isolated domain

3. Added jb-cl.xml to CommonLibrary. domain=DefaultDomain. No Deployment issues. But isolation didnt happen. My EJB was able to access com.common.library. (Even after removing the capabilities). 

<classloading xmlns="urn:jboss:classloading:1.0" domain="DefaultDomain"
	export-all="NON_EMPTY" import-all="false" excluded="META-INF,com.common.library">
	<capabilities>
		<module name="CommonLibrary-0.0.1-SNAPSHOT.jar" />
	</capabilities>
</classloading>

2010-09-16 12:12:34,333 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:50076]) new CommonUtils().todaysDate() = Thu Sep 16 12:12:34 PDT 2010
2010-09-16 12:12:34,334 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:50076]) Please keep it a secret:Thu Sep 16 12:12:34 PDT 2010
2010-09-16 12:12:34,335 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:50076]) new CommonUtils2().todaysDate() = From222 :Thu Sep 16 12:12:34 PDT 2010
2010-09-16 12:12:34,337 INFO  [ConsumerServiceBean] (WorkerThread#0[127.0.0.1:50076]) new CommonUtils3().todaysDate() = FromZZLibrary :Thu Sep 16 12:12:34 PDT 2010

4. No jb-cl.xml to ProducerEJB. ZAnotherEAR refers to ProducerEJB and does it succesfully.

5. Apparently, if an EJB is part of an EAR. One shouldnt give the “domain”, but just the “parent-domain” tag. Then the behaviour is replicated.
Upon TRACEing the jboss logs upon , I stumbled upon this:

Will use synthetic domain for classloader of subdeployment

I checked org.jboss.deployers.plugins.classloading.AbstractClassLoaderDescribeDeployer.

if (deployment.isTopLevelClassLoader() == false)
{
     if (deployment.getParentDomain() == null) {
            deployment.setDomain(unitName);
            log.debugf("Will use synthetic domain for classloader of subdeployment: %1s", unitName);
     }else{
             log.debugf("Will create top level classloader for subdeployment: %1s", unitName);
     }
  }

It clearly shows, if the parent-domain is missing, the domain is set to the EAR name.
Hence, The jboss-classloading.xml

<classloading xmlns="urn:jboss:classloading:1.0" parent-domain="DefaultDomain"
	export-all="NON_EMPTY" import-all="true" excluded="META-INF">
	<capabilities>
		<package name="<interface-package>" />
	</capabilities>
</classloading>

August 24, 2010

Mysql, load data infile, utf8

Filed under: Tech stuff — Tags: , , , , — praveenmyls @ 2:26 am

We have a need to sync data from oracle to mysql. The extract-data and the dump-data servers run on JBoss.
Steps
1. Dump-data server connects to extract-data server asking for the data
2. Extract-data server connects to oracle db, makes a CSV based file and sends it to dump-data server
3. Dump-data server extracts information from the CSV file for diff tables.
4. Dump-data server uses LOAD DATA INFILE to upload data into the corresponding mysql tables.

Issues
1. UTF8 characters like \u20ae was inserted into mysql as u20ae.
Example row in the CSV file.
“a”,”b”,”\u20ae”
2. Japanese/Chinese etc characters showed up as ? in the CSV files on the dump-server side.

Solutions
1. The default escape character in MySQL is “\”. So, If you have \n its interpreted as ‘newline’ , \t as tab etc etc. Any character that doesnt not fall in the same category will be treated as the normal character. For eg \u will be inserted into the table as ‘u’.
This issue does not occur when you would be inserting via java prepared statement/statement. The MySQL connector takes care of the escape sequencing.
You can turn off the default escape character feature in mysql by using NO_ESCAPE parameter.

2. International characters : There are two ways to solve this issue
a. The character set indicated by the ‘character_set_database’ system variable is used to interpret the information in the CSV file. Set character_set_database=’utf8′ and saving the CSV file in utf8 encoded format does the trick.
b. Save the file in utf8 encode format and use ‘character set’ in load data file command. This feature worked for me in 5.1.45 and doesnt work in earlier versions.

November 3, 2009

Java titbits

Filed under: Tech stuff — praveenmyls @ 2:40 am

Printing GC details: java -Xloggc:D:/log/myLogFile.log -XX:+PrintGCDetails
Using 64bit VM : java -showversion -b64 -Xms2g -Xmx2g

October 25, 2009

Maven – excluding jars in a EAR

Filed under: Tech stuff — Tags: , , , , — praveenmyls @ 11:55 pm

excluding transitive dependencies in a EAR.

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.2.0.ga</version>
<!–scope>provided</scope–>
<exclusions>
<exclusion>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</exclusion>
</exclusions>
</dependency>

October 21, 2009

BlazeDS, JBoss 5 and JDK 1.5

Filed under: Tech stuff — praveenmyls @ 7:09 am

If you have to deploy a blazeDS application onto JBoss 5, you can run into number of issues.
In my scenario, the same blazeDS war worked in jboss 4.2.2, but would hang the Jboss server while getting deployed.

You know that it has something to do with JBoss classloading. And for sure, it turns to be the same thing.
After an hour or more of hung state, I get this exception

2009-10-20 20:55:58,995 WARN [org.jboss.detailed.classloader.ClassLoaderManager] (main) Unexpected error during load of:javax.management.MBeanServer
java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.resize(HashMap.java:508)
at java.util.HashMap.addEntry(HashMap.java:799)
at java.util.HashMap.put(HashMap.java:431)
at java.util.HashSet.add(HashSet.java:194)
at java.lang.ClassLoader.checkPackageAccess(ClassLoader.java:391)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
at org.jboss.classloader.spi.base.BaseClassLoader.access$200(BaseClassLoader.java:63)
at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:572)
at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:532)
at java.security.AccessController.doPrivileged(Native Method)
at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:530)
at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:507)
at org.jboss.classloader.spi.base.BaseDelegateLoader.loadClass(BaseDelegateLoader.java:134)
at org.jboss.classloader.spi.filter.FilteredDelegateLoader.loadClass(FilteredDelegateLoader.java:131)
at org.jboss.classloader.spi.base.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:452)
at org.jboss.classloader.spi.base.ClassLoaderManager.nextTask(ClassLoaderManager.java:251)
at org.jboss.classloader.spi.base.ClassLoaderManager.process(ClassLoaderManager.java:150)
at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:265)
at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1119)
at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:798)
at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:441)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
at flex.management.BaseControl.register(BaseControl.java:190)
at flex.management.runtime.AdminConsoleDisplayRegistrar.(AdminConsoleDisplayRegistrar.java:40)
at flex.management.runtime.messaging.MessageBrokerControl.(MessageBrokerControl.java:85)
at flex.messaging.MessageBroker.(MessageBroker.java:269)
at flex.messaging.config.MessagingConfiguration.createBroker(MessagingConfiguration.java:105)
at flex.messaging.MessageBrokerServlet.init(MessageBrokerServlet.java:112)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:950)
2009-10-20 20:56:01,012 ERROR [STDERR] (main) **** MessageBrokerServlet failed to initialize due to runtime exception: Error: java.lang.NoClassDefFoundError: javax/management/MBeanServer
at flex.management.BaseControl.register(BaseControl.java:190)
at flex.management.runtime.AdminConsoleDisplayRegistrar.(AdminConsoleDisplayRegistrar.java:40)
at flex.management.runtime.messaging.MessageBrokerControl.(MessageBrokerControl.java:85)
at flex.messaging.MessageBroker.(MessageBroker.java:269)
at flex.messaging.config.MessagingConfiguration.createBroker(MessagingConfiguration.java:105)
at flex.messaging.MessageBrokerServlet.init(MessageBrokerServlet.java:112)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:950)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4122)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4421)
at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310)
at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142)
at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
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:592)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
at $Proxy38.start(Unknown Source)
at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)
at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)
at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:286)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
at org.jboss.system.ServiceController.doChange(ServiceController.java:688)
at org.jboss.system.ServiceController.start(ServiceController.java:460)
at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163)
at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99)
at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)
at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:361)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
at org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:306)
at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271)
at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
at org.jboss.Main.boot(Main.java:221)
at org.jboss.Main$1.run(Main.java:556)
at java.lang.Thread.run(Thread.java:613)
2009-10-20 20:56:01,013 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/celmi]] (main) Marking servlet MessageBrokerServlet as unavailable
2009-10-20 20:56:01,013 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/celmi]] (main) Servlet /celmi threw load() exception
javax.servlet.UnavailableException: javax/management/MBeanServer
at flex.messaging.MessageBrokerServlet.init(MessageBrokerServlet.java:170)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:950)
at orgapache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4122)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4421)
at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310)
at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142)
at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
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:592)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
at $Proxy38.start(Unknown Source)
at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)
at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)
at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:286)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
at org.jboss.system.ServiceController.doChange(ServiceController.java:688)
at org.jboss.system.ServiceController.start(ServiceController.java:460)
at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163)
at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99)
at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)
at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:361)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
at org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:306)
at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271)
at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
at org.jboss.Main.boot(Main.java:221)
at org.jboss.Main$1.run(Main.java:556)
at java.lang.Thread.run(Thread.java:613)

I searched for MBeanServer in my classpath, and my blazeDS war did have a jmxri-1.2.1.jar in its lib folder.

I figured turning on the classloading logging might help. So, in jboss-log4j.xml


<category name="org.jboss.classloading" additivity="false">
<priority value="TRACE"></priority>
<appender-ref ref="UCL"></appender-ref>
</category>

<category name="org.jboss.detailed.classloading" additivity="false">
<priority value="TRACE"></priority>
<appender-ref ref="UCL"></appender-ref>
</category>

<category name="flex.messaging" additivity="false">
<priority value="TRACE"></priority>
<appender-ref ref="UCL"></appender-ref>
</category>

And then, I stumbled upon an infinite loop! I had to kill the process.


2009-10-20 23:03:17,452 TRACE [1789774,VFSClassLoaderPolicy,main] getProtectionDomain:className=javax.management.MBeanServer path=javax/management/MBeanServer.class codeSourceURL=jar:file:/jboss-5.1.0.GA/server/default/deploy/celmi.war!/WEB-INF/lib/jmxri-1.2.1.jar
2009-10-20 23:03:19,506 TRACE [1791828,VFSClassLoaderPolicy,main] getProtectionDomain:className=javax.management.MBeanServer path=javax/management/MBeanServer.class codeSourceURL=jar:file:/jboss-5.1.0.GA/server/default/deploy/celmi.war!/WEB-INF/lib/jmxri-1.2.1.jar
2009-10-20 23:03:19,517 TRACE [1791839,VFSClassLoaderPolicy,main] getProtectionDomain:className=javax.management.MBeanServer path=javax/management/MBeanServer.class codeSourceURL=jar:file:/jboss-5.1.0.GA/server/default/deploy/celmi.war!/WEB-INF/lib/jmxri-1.2.1.jar

Picked this up from stack-overflow.
If you’re running JBoss on Java 5 or above, then you’ll likely have 2 MBean servers running: the “platform” mbean server, which is hosted by the JVM, and the JBoss MBean server, which is hosted by the JBoss code. The two have nothing to do with each other.
Your code will register mbean in the JVM platform server, which is no use to you.

The easiest way to get a programmatic reference to the JBoss MBean server is

org.jboss.mx.util.MBeanServerLocator.locateJBoss()

Try using that instead of

ManagementFactory.getPlatformMBeanServer();

Steps to fix this:
1. Download BlazeDS code
2. Open up blazeds_src_3-0-0-544/modules/core/src/java/flex/management/BaseControl.java
3. Make the MBeanServer be pointed to the JBoss MBeanServer.


public final void register()
{
if (!registered)
{
//MBeanServer server = MBeanServerLocatorFactory.getMBeanServerLocator().getMBeanServer();
MBeanServer server = org.jboss.mx.util.MBeanServerLocator.locateJBoss();

ObjectName name = getObjectName();
try
{
if (server.isRegistered(name))
{
server.unregisterMBean(name);
}

registeredObjectName = server.registerMBean(this, name).getObjectName();
registered = true;
onRegistrationComplete();

}
catch (ManagementException me)
{
throw me;
}
catch (MBeanRegistrationException mre)
{
// Rethrow with useful message if this ever happens.
ManagementException me = new ManagementException();
me.setMessage(REG_EXCEPTION, new Object[] {name.toString()});
me.setRootCause(mre);
throw me;
}
catch (InstanceAlreadyExistsException iaee)
{
// If registration is not working at all, inform the user that
// they may
// work around the issue by disabling management (no MBeans will
// be registered).
if (!server.isRegistered(name))
{
ManagementException me = new ManagementException();
me.setMessage(DISABLE_MANAGEMENT, new Object[] {name.toString()});
throw me;
}
else
{
// Rethrow with useful message if this ever happens.
ManagementException me = new ManagementException();
me.setMessage(REG_ALREADYEXISTS, new Object[] {name.toString()});
throw me;
}
}
catch (NotCompliantMBeanException ncme)
{
// Rethrow with useful message if this ever happens.
ManagementException me = new ManagementException();
me.setMessage(REG_NOTCOMPLIANT, new Object[] {name.toString()});
throw me;
}
catch (InstanceNotFoundException infe)
{
// Rethrow with useful message if this ever happens.
ManagementException me = new ManagementException();
me.setMessage(UNREG_NOTFOUND, new Object[] {name.toString()});
throw me;
}
}
}

4. Create a patch of this file and name it such that it is picked up before blazeds*.
5. Add it in your lib directory of your BlazeDS war app, and voila!

September 24, 2009

JBoss classloading demystified!

Filed under: Tech stuff — Tags: , , , , , — praveenmyls @ 6:13 am

When things get to go wrong couple of days before production, you tend to understand how JBoss classloading works.
This is with JBoss 4.2.2GA

You have two EARs, a.ear and b.ear. Both have c.jar in their libs.
Case 1: Both EARs dont do a scoped classloading

    What happens at server startup:

Both a.ear and b.ear use the same UnifiedLoadedRepository3 instance.
a.ear gets loaded first.
a.ear puts c.jar into the repository.
Now a.ear/b.ear and c.jar are called as UCL’s (Unified class loaders). All these UCLs are listed in the order of the deployment.
If C.class is in c.jar, then when asked for C.class, it is picked up from c.jar of a.ear. ie JBoss goes thru the list of the UCLs with the ULR. And the it finds C.class @ c.jar of a.ear first, and it returns the same.

When you hot undeploy a.ear, then any code calling b.ear gets C.class from b.ear. The only difference is that c.jar is out of the ULR. You get a “Not loaded in repository cache” message in the JMX window.

Now do a hot deploy of a.ear, this time you get java.lang.VerifyError for some class in c.jar.
When you redeploy the common jars, you need to redeploy everything.

Case 2: b.ear has the isolation part and also java2ParentDelegation to true

    What happens at server startup:

Calling b.ear will fail due to Classcastexception on the shared classes.
Why? The scoped application will use the already loaded class from the parent repository’s class cache.

We will go over these scenarios:
1. Deploy A, Deploy B, startserver, undeploy A, Access B
2. Deploy A, Deploy B, startserver, Access App A , undeploy A, Access App B
3. Deploy A, Deploy B, startserver, Access App A , undeploy B, Access App A
4. Deploy A, Deploy B, startserver, Access App A , Access App B, undeploy A, Access App B

Case 1: Deploy A, Deploy B, startserver, undeploy A, Access B

  • A.ear and B.ear deployed.
    displayClassInfo:

    com.noelios.restlet.ext.servlet.ServerServlet Information
    Repository cache version:
    com.noelios.restlet.ext.servlet.ServerServlet(11c5b4).ClassLoader=org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}
    ..org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet-1.1.1.jar
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet.ext.servlet-1.1.1.jar
    ..org.jboss.system.server.NoAnnotationURLClassLoader@fcfa52
    ..sun.misc.Launcher$AppClassLoader@7172ea
    ….file:/Volumes/Mustang/branch/JBoss_POS_20081204/jboss-4.2.2.GA-pos/bin/run.jar
    ..sun.misc.Launcher$ExtClassLoader@b169f8
    ….file:/Library/Java/Extensions/jspComm.jar
    ++++CodeSource: (file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet.ext.servlet-1.1.1.jar )
    Implemented Interfaces:
    ### Instance0 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}
    ### Instance1 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@9c5cf5{ url=file:abc/deploy/tmp6517201656953000171B-0.0.1-SNAPSHOT.ear ,addedOrder=48}

    ->undeploy A

    com.noelios.restlet.ext.servlet.ServerServlet Information
    Not loaded in repository cache
    ### Instance0 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@151ce0{ url=file:abc/deploy/tmp3581146229639141667B-0.0.1-SNAPSHOT.ear ,addedOrder=48}

    ->Access AppB via

      http://localhost:8080/appb/services/all

    2009-09-26 19:46:28,567 ERROR [http-127.0.0.1-8080-1 - [ServerServlet]] – Allocate exception for servlet ServerServlet
    java.lang.NullPointerException
    at org.jboss.mx.loading.RepositoryClassLoader.findClass(RepositoryClassLoader.java:630)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
    at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:474)
    at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:415)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)

    What happened here?? JBoss maps up A.ear to be the classloader for ServerServlet. JBoss hasnt loaded the ServerServlet yet. When B.ear wants ServerServlet class, JBoss checks its UCL’s and sees that A.ear can load it. Since we undeloyed A.ear, we get this nullptrexception

  • Case 2: Deploy A, Deploy B, startserver,Access App A , undeploy A, Access App B

  • A.ear and B.ear deployed.
    displayClassInfo:

    com.noelios.restlet.ext.servlet.ServerServlet Information
    Repository cache version:
    com.noelios.restlet.ext.servlet.ServerServlet(11c5b4).ClassLoader=org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}
    ..org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet-1.1.1.jar
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet.ext.servlet-1.1.1.jar
    ..org.jboss.system.server.NoAnnotationURLClassLoader@fcfa52
    ..sun.misc.Launcher$AppClassLoader@7172ea
    ….file:/Volumes/Mustang/branch/JBoss_POS_20081204/jboss-4.2.2.GA-pos/bin/run.jar
    ..sun.misc.Launcher$ExtClassLoader@b169f8
    ….file:/Library/Java/Extensions/jspComm.jar
    ++++CodeSource: (file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet.ext.servlet-1.1.1.jar )
    Implemented Interfaces:
    ### Instance0 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}
    ### Instance1 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@9c5cf5{ url=file:abc/deploy/tmp6517201656953000171B-0.0.1-SNAPSHOT.ear ,addedOrder=48}

    ->Access AppA via

      http://localhost:8080/appa/services/all

    ->undeploy A

    com.noelios.restlet.ext.servlet.ServerServlet Information
    Not loaded in repository cache
    ### Instance0 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@151ce0{ url=file:abc/deploy/tmp3581146229639141667B-0.0.1-SNAPSHOT.ear ,addedOrder=48}

    ->Access AppB via

      http://localhost:8080/appb/services/all

    java.lang.ClassCastException: com.apple.ist.retail.pos.b.restlet2.BApplication
    com.noelios.restlet.ext.servlet.ServerServlet.createApplication(ServerServlet.java:282)
    com.noelios.restlet.ext.servlet.ServerServlet.getApplication(ServerServlet.java:703)
    com.noelios.restlet.ext.servlet.ServerServlet.init(ServerServlet.java:820)
    com.apple.ist.retail.pos.b.servlet2.BServlet.init(BServlet.java:24)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)

    What happened here? B.ear was linked up with the ServerServlet from A.ear. When A.ear was undeployed, the ServerServlet got loaded from B.ear and thus this ClassCastException

  • Case 3: Deploy A, Deploy B, startserver,Access App A , undeploy B, Access App A

  • A.ear and B.ear deployed.
    displayClassInfo:

    com.noelios.restlet.ext.servlet.ServerServlet Information
    Repository cache version:
    com.noelios.restlet.ext.servlet.ServerServlet(11c5b4).ClassLoader=org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}
    ..org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet-1.1.1.jar
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet.ext.servlet-1.1.1.jar
    ..org.jboss.system.server.NoAnnotationURLClassLoader@fcfa52
    ..sun.misc.Launcher$AppClassLoader@7172ea
    ….file:/Volumes/Mustang/branch/JBoss_POS_20081204/jboss-4.2.2.GA-pos/bin/run.jar
    ..sun.misc.Launcher$ExtClassLoader@b169f8
    ….file:/Library/Java/Extensions/jspComm.jar
    ++++CodeSource: (file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet.ext.servlet-1.1.1.jar )
    Implemented Interfaces:
    ### Instance0 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}
    ### Instance1 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@9c5cf5{ url=file:abc/deploy/tmp6517201656953000171B-0.0.1-SNAPSHOT.ear ,addedOrder=48}

    ->Access AppA via

      http://localhost:8080/appa/services/all

    ->undeploy B
    displayClassInfo:

    com.noelios.restlet.ext.servlet.ServerServlet Information
    Repository cache version:
    com.noelios.restlet.ext.servlet.ServerServlet(11c5b4).ClassLoader=org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}
    ..org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet-1.1.1.jar
    ….file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet.ext.servlet-1.1.1.jar
    ..org.jboss.system.server.NoAnnotationURLClassLoader@fcfa52
    ..sun.misc.Launcher$AppClassLoader@7172ea
    ….file:/Volumes/Mustang/branch/JBoss_POS_20081204/jboss-4.2.2.GA-pos/bin/run.jar
    ..sun.misc.Launcher$ExtClassLoader@b169f8
    ….file:/Library/Java/Extensions/jspComm.jar
    ++++CodeSource: (file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear-contents/lib/com.noelios.restlet.ext.servlet-1.1.1.jar )
    Implemented Interfaces:
    ### Instance0 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@5a84be{ url=file:abc/deploy/tmp7314601894329309101A-0.0.1-SNAPSHOT.ear ,addedOrder=47}

    ->Access AppA : No issues

  • Older Posts »

    Theme: WordPress Classic. Blog at WordPress.com.

    Follow

    Get every new post delivered to your Inbox.