google Analytics

Tuesday, October 19, 2010

Java Exception Chaining

public void printStackTrace()


=============================================================

=============================================================

Prints this throwable and its backtrace to the standard error stream. This method prints a stack trace for this Throwable object on the error output stream that is the value of the field System.err. The first line of output contains the result of the toString() method for this object. Remaining lines represent data previously recorded by the method fillInStackTrace(). The format of this information depends on the implementation, but the following example may be regarded as typical:


=============================================================

=============================================================
java.lang.NullPointerException
at MyClass.mash(MyClass.java:9)
at MyClass.crunch(MyClass.java:6)
at MyClass.main(MyClass.java:3)


This example was produced by running the program:

class MyClass {
public static void main(String[] args) {
crunch(null);
}
static void crunch(int[] a) {
mash(a);
}
static void mash(int[] b) {
System.out.println(b[0]);
}
}


=============================================================

=============================================================

The backtrace for a throwable with an initialized, non-null cause should generally include the backtrace for the cause. The format of this information depends on the implementation, but the following example may be regarded as typical:

HighLevelException: MidLevelException: LowLevelException
at Junk.a(Junk.java:13)
at Junk.main(Junk.java:4)
Caused by: MidLevelException: LowLevelException
at Junk.c(Junk.java:23)
at Junk.b(Junk.java:17)
at Junk.a(Junk.java:11)
... 1 more
Caused by: LowLevelException
at Junk.e(Junk.java:30)
at Junk.d(Junk.java:27)
at Junk.c(Junk.java:21)
... 3 more


Note the presence of lines containing the characters "...". These lines indicate that the remainder of the stack trace for this exception matches the indicated number of frames from the bottom of the stack trace of the exception that was caused by this exception (the "enclosing" exception). This shorthand can greatly reduce the length of the output in the common case where a wrapped exception is thrown from same method as the "causative exception" is caught. The above example was produced by running the program:

public class Junk {
public static void main(String args[]) {
try {
a();
} catch(HighLevelException e) {
e.printStackTrace();
}
}
static void a() throws HighLevelException {
try {
b();
} catch(MidLevelException e) {
throw new HighLevelException(e);
}
}
static void b() throws MidLevelException {
c();
}
static void c() throws MidLevelException {
try {
d();
} catch(LowLevelException e) {
throw new MidLevelException(e);
}
}
static void d() throws LowLevelException {
e();
}
static void e() throws LowLevelException {
throw new LowLevelException();
}
}

class HighLevelException extends Exception {
HighLevelException(Throwable cause) { super(cause); }
}

class MidLevelException extends Exception {
MidLevelException(Throwable cause) { super(cause); }
}

class LowLevelException extends Exception {
}


=============================================================

=============================================================

Tuesday, October 12, 2010

JBOSS Clustering

JBOSS JMS clustering
----------------------


=============================================================



=============================================================
run.bat -c node1 -g PartitionA -u 239.255.100.100 -b localhost -Djboss.messaging.ServerPeerID=1
run.bat -c node2 -g PartitionB -u 239.255.100.100 -b localhost -Djboss.messaging.ServerPeerID=2

=============================================================



=============================================================
JBoss Messaging clusters JMS queues and topics transparently  across the cluster. Messages sent to
a distributed queue or topic on one node are consumable on other nodes. To designate that a particular destination is clustered, simply set the Clustered attribute in the destination deployment descriptor to true:
=============================================================



=============================================================
<mbean code="org.jboss.jms.server.destination.QueueService"
name="jboss.messaging.destination:service=Queue,name=clusteredQueue"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">
jboss.messaging:service=ServerPeer
</depends>
<depends>jboss.messaging:service=PostOffice</depends>
<attribute name="Clustered">true</attribute>
</mbean>
=============================================================
 

=============================================================
Configuring EJB 3.0 Stateful Session Bean cache
The @org.jboss.ejb3.annotation.CacheConfig Annotation

@Stateful
@Clustered
@CacheConfig(name="new-sfsb-cache")
@Remote(StatefulRemote.class)

Configuring entity caching

<properties>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="hibernate.cache.region.factory_class"
value="org.hibernate.cache.jbc2.JndiMultiplexedJBossCacheRegionFactory"/>
<property name="hibernate.cache.region.jbc2.cachefactory" value="java:CacheManager"/>
<property name="hibernate.cache.region.jbc2.cfg.entity" value="mvcc-entity"/>
<property name="hibernate.cache.region.jbc2.cfg.collection" value="mvcc-entity"/>
</properties>



=============================================================



=============================================================

import javax.persistence.*;
import org.hibernate.annotations.*;
@Entity
@Cache (usage=CacheConcurrencyStrategy.TRANSACTIONAL)
public class ProductEntity implements Serializable {
}
Refer
//deploy\cluster\jboss-cache-manager.sar\META-INF\jboss-cache-configs.xml & jboss-cache-manager-jboss-beans.xml

=============================================================
 

=============================================================
Clustering web applications

Configuring HTTP replication

In web.xml add adding the<distributable /> tag

<web-app>
. . . . .
<distributable />
</web-app>

Refer :jbossweb.deployer\META-INF\war-deployers-jboss-beans.xml

The jboss-web.xml

<!DOCTYPE jboss-web PUBLIC
-//JBoss//DTD Web Application 5.0//EN
http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd>
<jboss-web>
<replication-config>
<cache-name>custom-web-cache</cache-name>
<replication-trigger>SET</replication-trigger>
<replication-granularity>ATTRIBUTE</replication-granularity>
<max-unreplicated-interval>30</max-unreplicated-interval>
<snapshot-mode>instant</snapshot-mode>
<snapshot-interval>1000</snapshot-interval>
</replication-config>
</jboss-web>


=============================================================
 

=============================================================

Jboss  clustering Example
Clustering Web Using Jboss
JMS Clustering Example
Running Jboss in Clustering Mode

--
Anish

Thursday, October 7, 2010

JtaTransactionManager Bean

JtaTransactionManager Bean
=============================================================
 


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
...
<bean id="jtaTransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager"/>
...
</beans>

By default, the JtaTransactionManager will attempt to automatically detect a UserTransaction
bound to the java:comp/UserTransaction JNDI name; if the java:comp/UserTransaction object also
implements the TransactionManager, the JtaTransactionManager will use that; if the java:comp/
UserTransaction does not implement the TransactionManager, the JtaTransactionManager will attempt
to find the TransactionManager under these JNDI names:
  1. • java:comp/UserTransaction: The default JNDI name, used by Resin 2.x, Oracle OC4J (Orion),
  2. JOnAS (JOTM), BEA WebLogic, and IBM WebSphere
  3. • java:pm/TransactionManager: JNDI name for TransactionManager in Borland Enterprise Server and Sun Application Server (Sun ONE 7 and later)
  4. • java:comp/TransactionManager: JNDI name used in Resin 3.x
  5. • java:/TransactionManager: The name used in the JBoss Application Server

===========================================================================================



jtatransactionmanager example
jtatransactionmanager spring example
jtatransactionmanager hibernate
ANish