Java - UserTransaction nullPointerException

 
Vista:

UserTransaction nullPointerException

Publicado por Bergkamp (4 intervenciones) el 24/11/2006 16:29:17
Holax, tengo un problema que ya no tengo ni idea de como solucionar, a ver si alguien me puede ayudar con esto.

Tengo un método que me está arrojando nullPointerException al hacer tx.commit();

Aunque el código se ve algo largo y difícil de comprender, tiene en general esta estructura:

public static String crearCaso(String pkCliente, String producto, String usuario, String entidad) throws Exception {
UserTransaction tx = null;
InitialContext ctx = new InitialContext();
tx =(UserTransaction)ctx.lookup("java:comp/UserTransaction");
try{
tx.begin();
/* TODO EL CODIGO DEL METODO*/
tx.commit();
}catch(Exception e){
if(tx!=null)
tx.rollback();
}
}

Lo pongo completo por si acaso:

public static String crearCaso(String pkCliente, String producto, String usuario, String entidad) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("dd'/'MM'/'yyyy");


UserTransaction tx = null;
InitialContext ctx = new InitialContext();
tx =(UserTransaction)ctx.lookup("java:comp/UserTransaction");




String idCaso = "";
String nombre = "";
String apellido = "";
String emailCliente ="";
String documentoCliente = "";
String telefonoContacto = "";
String areaNegocios = "ND";
String empresa = "Desconocida";
String tipoBanca = "id 1";
String nivelEconomico = "NIVECODE";
String oficinaTutora = "id 1";
String tipoFraude = "33";
String prioridad = "PA";
Double montoReclamo = new Double(0);
String descripcion = Idioma.traducir("CF_MSG_CASOGENAUTODESDEGESTCOLAS");
String tipoCuenta = "1";
java.util.Date fechaReclamo = null;
java.util.Date fechaDebito = null;
java.util.Date fechaDebitoFin = null;
String estatusSuaf = "CBPPA";
String nivelCaso = "NIV0";
String decision = "DBSD";
try{




tx.begin();



try {
CfClienteLocalHome clienteHome = CfClienteUtil.getLocalHome();
CfClienteLocal clienteLocal = clienteHome.findByPrimaryKey(pkCliente);
String[] nombreApellido = clienteLocal.getCliNombre().split(";");
nombre = nombreApellido[0];
apellido = nombreApellido[1];
documentoCliente = clienteLocal.getIdCliente();
emailCliente = clienteLocal.getCliEmail();
telefonoContacto = clienteLocal.getCliTelefono();
if ((telefonoContacto == null)|| (telefonoContacto == "")){
telefonoContacto = "ND";
}
if ((emailCliente == null)|| (emailCliente == "")){
emailCliente = "ND";
}
if ((nombre == null)|| (nombre == "")){
nombre = "ND";
}
}catch(FinderException fe) {
throw new Exception("Error al obtener datos del cliente. Motivo: "+fe.getMessage());
}
try {
fechaReclamo = (new java.util.Date(System.currentTimeMillis()));
fechaDebito = (new java.util.Date(System.currentTimeMillis()));
fechaDebitoFin = (new java.util.Date(System.currentTimeMillis()));
}catch(Exception e) {
throw new Exception("Error al parsear las fechas. Motivo: "+e.getMessage());
}
java.util.Date fechaRegistroSUAF = new java.util.Date(System.currentTimeMillis());
String numeroTarjeta = producto;
String numeroCuenta = producto;
String cedulaRif = documentoCliente;
try {
CfCasoLocalHome casoHome = CfCasoUtil.getLocalHome();
idCaso = new Long(System.currentTimeMillis()).toString();
CfCasoLocal caso = casoHome.create(idCaso,tipoFraude,nombre,apellido,emailCliente,areaNegocios,nivelEconomico,prioridad,tipoBanca,empresa,oficinaTutora,telefonoContacto,new Timestamp(fechaRegistroSUAF.getTime()),new Timestamp(fechaReclamo.getTime()),new Timestamp(fechaDebito.getTime()),producto,numeroTarjeta,numeroCuenta,descripcion,montoReclamo,cedulaRif);
caso.setTipoCuenta(tipoCuenta);
caso.setOrigenCaso("Motor");
caso.setEstatusSuaf(estatusSuaf);
caso.setNivelCaso(nivelCaso);
caso.setDecision(decision);
caso.setFechaDebitofin(new Timestamp(fechaDebitoFin.getTime()));
CfExpedienteLocalHome expedienteHome = (CfExpedienteLocalHome) com.swd.cf.ejb.ServiceLocator.getLocalHome("ejb/BACKCfExpedienteLocalHome");
CfExpedienteLocal expedienteLocal = expedienteHome.create(CfExpedienteUtil.generateGUID(expedienteHome),caso.getIdCaso());
try {
CfClientebackLocalHome clienteBackHome = CfClientebackUtil.getLocalHome();
CfClientebackLocal clienteBackLocal = clienteBackHome.findByPrimaryKey(pkCliente);
clienteBackLocal.setCliEmail(emailCliente);
clienteBackLocal.setCliNombre(nombre.toUpperCase()+";"+(apellido!=null?apellido.toUpperCase():""));
clienteBackLocal.setCliTelefono(telefonoContacto);
}catch(FinderException fe) {
CfClientebackLocalHome clienteBackHome = CfClientebackUtil.getLocalHome();
CfClientebackLocal clienteBack = clienteBackHome.create(cedulaRif,entidad,nombre.toUpperCase()+";"+(apellido!=null?apellido.toUpperCase():""),telefonoContacto,emailCliente);
}
try {
CfProductobackLocalHome productoHome = CfProductobackUtil.getLocalHome();
CfProductobackLocal productoLocal = productoHome.findByPrimaryKey(producto);
}catch(FinderException fe2) {
CfProductobackLocalHome prodBackHome = CfProductobackUtil.getLocalHome();
CfProductobackLocal prodBackLocal = prodBackHome.create(producto);
prodBackLocal.setEntidad(entidad);
prodBackLocal.setCliente(pkCliente);
prodBackLocal.setNrocuenta(numeroCuenta);
CfTipoproductoLocal tipprodLocal = null;
if(tipprodLocal!=null) {
prodBackLocal.setTipoprod(tipprodLocal.getIdTipo());
}
}
CfProductocasoLocalHome productoCasoHome = CfProductocasoUtil.getLocalHome();
CfProductocasoLocal productoCasoLocal = productoCasoHome.create(producto,caso.getIdCaso());
productoCasoLocal.setEntidad(entidad);
CfProductoLocalHome productoLocal = CfProductoUtil.getLocalHome();
CfProductoLocal productoS = productoLocal.findByPrimaryKey(producto);
CfTransaccasoLocalHome transaccasoHome = CfTransaccasoUtil.getLocalHome();
CfTransaccasoLocal transaccaso = null;
boolean exist_transacasos = false;
Double monto_decimal = null;
double _monto = 0;
String pkProductoCaso = producto;
double montoReclamado = 0.0;
CfTransaccionLocalHome transaccioLocalHome = CfTransaccionUtil.getLocalHome();
Collection transacciones = transaccioLocalHome.findByFkProducto(producto);
Iterator itTransacc = transacciones.iterator();
String idTransaccaso = "";
int n=0;
while (itTransacc.hasNext()){
n= n+1;
CfTransaccionLocal transaccion = (CfTransaccionLocal) itTransacc.next();
idTransaccaso = producto + String.valueOf(transaccion.getTraFechaMS().trim().toString());
try{
transaccaso = transaccasoHome.findByPrimaryKey(idTransaccaso);
exist_transacasos = true;
}catch(FinderException e) {
exist_transacasos = false;
}
if (!exist_transacasos){
transaccaso = transaccasoHome.create(idTransaccaso,idCaso,transaccion.getFkCategoria(),pkProductoCaso);
transaccaso.setFkCaso(idCaso);
transaccaso.setFkProductocaso(producto);
transaccaso.setTrcComercio(transaccion.getTraComercio().trim());
transaccaso.setFkCategoria(transaccion.getFkCategoria());
transaccaso.setTrcFecha(new Timestamp(transaccion.getTraFecha().getTime()));
monto_decimal = new Double(transaccion.getTraMontoOrg().toString().trim());
_monto = monto_decimal.doubleValue();
transaccaso.setTrcMonto(new BigDecimal(_monto) );
monto_decimal = new Double(transaccion.getTraMontoLoc().toString().trim());
transaccaso.setTrcMontoLoc(monto_decimal);
transaccaso.setTrcCodResp(transaccion.getTraCodResp());
transaccaso.setTrcStatusCliente(transaccion.getTraStatus());
transaccaso.setTrcStatusAnalista("0");
transaccaso.setTrcStatusFinal("0");
transaccaso.setTrcPais(transaccion.getTraPais());
transaccaso.setTrcAgencia(transaccion.getTraAgencia());
transaccaso.setTrcUsuario(transaccion.getTraUsuario());
transaccaso.setTrcTipotx(transaccion.getTraTipotx());
transaccaso.setTrcMoneda(transaccion.getTraMoneda());
transaccaso.setTrcBanco(transaccion.getTraBancoAdquiriente());
transaccaso.setTrcFechams(transaccion.getTraFechaMS());
transaccaso.setTrcAdicional("0");
transaccaso.setTrcSaldoTdc(new BigDecimal("0"));
transaccaso.setTrcAutorizadoNoPosteado(Long.valueOf("0"));
transaccaso.setTrcBeneficiario(transaccion.getTraBeneficiario());
String statusCliente = transaccion.getTraStatus();
double montoAux = 0.0;
if ((statusCliente!=null) && statusCliente.equals("R") ) {
Double monto_i = transaccion.getTraMontoLoc();
montoAux = monto_i.doubleValue();
montoReclamado += montoAux;
}
}
}
caso.setMontoReclamo(new Double(montoReclamado));
}catch(Exception e) {
e.printStackTrace();
throw new Exception("Error al crear el caso. Motivo: "+e.getMessage());
}






tx.commit();






}catch(Exception e){
e.printStackTrace();
if(tx!=null)
try{




tx.rollback();




}catch(Exception e2){
e2.printStackTrace();
}
throw new Exception("Error al crear el caso. Motivo: "+e.getMessage());
}
return idCaso;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:UserTransaction nullPointerException

Publicado por Bergkamp (4 intervenciones) el 24/11/2006 16:30:29
Se me olvidó mostrarles el error que arroja por la cónsola, es el siguiente:

SEVERE: EJB5071: Some remote or transactional roll back exception occurred
com.sun.jdo.api.persistence.support.JDOFatalInternalException: Got an unknown exception.
NestedException: java.lang.NullPointerException
at com.sun.jdo.spi.persistence.support.sqlstore.SQLStateManager.updatePersistent(SQLSta
teManager.java:1012)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.PersistenceManagerImpl.beforeCompl
etion(PersistenceManagerImpl.java:1251)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.TransactionImpl.notifyBeforeComple
tion(TransactionImpl.java:1115)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.TransactionImpl.commitBefore(Trans
actionImpl.java:743)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.TransactionImpl.beforeCompletion(T
ransactionImpl.java:646)
at com.sun.ejb.containers.ContainerSynchronization.beforeCompletion(ContainerSynchroniz
ation.java:105)
at com.sun.enterprise.distributedtx.J2EETransaction.commit(J2EETransaction.java:183)
at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.commit(J2EETransactionMan
agerOpt.java:310)
at com.sun.enterprise.distributedtx.UserTransactionImpl.commit(UserTransactionImpl.java
:129)
at com.swd.cf.back.gestion.GestionCasos.crearCaso(GestionCasos.java:2246)
at _jasper._updateTransacciones_jsp._jspService(_updateTransacciones_jsp.java:387)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.iplanet.ias.web.jsp.JspServlet$JspServletWrapper.service(JspServlet.java:552)
at com.iplanet.ias.web.jsp.JspServlet.serviceJspFile(JspServlet.java:368)
at com.iplanet.ias.web.jsp.JspServlet.service(JspServlet.java:287)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.StandardWrapperValve.invokeServletService(StandardWrapperVa
lve.java:720)
at org.apache.catalina.core.StandardWrapperValve.access$000(StandardWrapperValve.java:1
18)
at org.apache.catalina.core.StandardWrapperValve$1.run(StandardWrapperValve.java:278)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:274)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:505)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:212)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:203)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:505)
at com.iplanet.ias.web.connector.nsapi.NSAPIProcessor.process(NSAPIProcessor.java:157)
at com.iplanet.ias.web.WebContainer.service(WebContainer.java:598)



Bueno, si alguien tiene alguna idea sería genial. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:UserTransaction nullPointerException

Publicado por Bergkamp (4 intervenciones) el 27/11/2006 14:03:20
Nadie tiene idea de qué podrá ser? Ya probé hasta aumentarle el timeout a la tx, ya no se qué más intentar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:UserTransaction nullPointerException

Publicado por Berkamp (4 intervenciones) el 29/11/2006 16:46:37
Listo!

Ya lo solucioné!

Lo que hice fue cambiar el DataSource y ponerle el oracle.jdbc.pool.OracleConnectionPoolDataSource

Gracias a todos por esas respuestas tan detalladas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar