La lección 1.2 le guiará por los pasos necesarios para la creación de las clases e interfaces necesarias para la clase SingletonCounterBean.java.
// Este programa puede utilizarse, ejecutarse, copiarse, modificarse y distribuirse
// libre de derechos de autor a efectos de desarrollo, utilización, comercialización o distribución.
package com.ibm.example.websphere.ejb3sample.counter;
import java.io.Serializable;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
public class Audit implements Serializable {
private static final long serialVersionUID = 4267181799103606230L;
@AroundInvoke
public Object methodChecker (InvocationContext ic)
throws Exception
{
System.out.println("Audit:methodChecker - About to execute method: " + ic.getMethod());
Object result = ic.proceed();
return result;
}
}
public class SingletonCounterBean {
}
por este código:
public class SingletonCounterBean implements LocalCounter, RemoteCounter {
private static final String CounterDBKey = "PRIMARYKEY";
// Utilizar persistencia gestionada por contenedor - inyectar EntityManager
@PersistenceContext (unitName="Counter")
private EntityManager em;
public int increment()
{
int result = 0;
try {
JPACounterEntity counter = em.find(JPACounterEntity.class, CounterDBKey);
if ( counter == null ) {
counter = new JPACounterEntity();
counter.setPrimaryKey(CounterDBKey);
em.persist( counter );
}
counter.setValue( counter.getValue() + 1 );
em.flush();
em.clear();
result = counter.getValue();
} catch (Throwable t) {
System.out.println("SingletonCounterBean:increment - caught unexpected exception: " + t);
t.printStackTrace();
}
return result;
}
public int getTheValue()
{
int result = 0;
try {
JPACounterEntity counter = em.find(JPACounterEntity.class, CounterDBKey);
if ( counter == null ) {
counter = new JPACounterEntity();
em.persist( counter );
em.flush();
}
em.clear();
result = counter.getValue();
} catch (Throwable t) {
System.out.println("SingletonCounterBean:increment - caught unexpected exception: " + t);
t.printStackTrace();
}
return result;
}
}
Pulse Control+S para guardar.// Este programa puede utilizarse, ejecutarse, copiarse, modificarse y distribuirse
// libre de derechos de autor a efectos de desarrollo, utilización, comercialización o distribución.
package com.ibm.example.websphere.ejb3sample.counter;
import javax.ejb.Local;
@Local
public interface LocalCounter {
public int increment();
public int getTheValue();
}
// Este programa puede utilizarse, ejecutarse, copiarse, modificarse y distribuirse
// libre de derechos de autor a efectos de desarrollo, utilización, comercialización o distribución.
package com.ibm.example.websphere.ejb3sample.counter;
import javax.ejb.Remote;
@Remote
public interface RemoteCounter {
public int increment();
public int getTheValue();
}