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;
}
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


0