En este artículo les explico los pasos que se tiene que llevar a cabo para registrar un nuevo Data Source en WebLogic. Los Data Source o fuentes de datos nos permitirán administrar el acceso a los datos de una forma mas segura, ya que en vez que cada aplicación mantenga las credenciales a las base de datos, estas estarán resguardas por el Data Source. Los data source también permiten mantener un conjunto de conexiones abiertas para estar disponibles al instante de ser requeridas.
- Lo primero que tendremos que hacer es entrar a la consola de WebLogic la cual generalmente la URL es http:// <host> : <puerto> /console y en caso de estar instalada en el localhost la url por default es http://localhost:7001/console.
- Una vez en la consola ubicamos la opción de Data Source que se encuentra las opciones del lado izquierdo.
- En Data Source aparece una tabla con los Data Source registrados en WebLogic y la opción de crear uno nuevo, para lo cual presionamos en New y presionamos en la opción Generic Data Source. En caso de que la opción no aparezca habilitada es por que tenemos configurado el WebLogic en modo productivo y para poder crear un Data Source es necesario crear una Actividad desde la parte superior izquierda.
- En la siguiente pantalla determinamos el nombre del DataSource el Nombre de JNDI y el tipo de base de datos que vamos a utilizar. presionamos Next para continuar.Name representa el identificador dentro de WebLogic, JNDI Name representa el nombre con el cual aremos referencia desde nuestra aplicación para poderlo inyectar por medio de CDI, Database Type es el tipo de base de datos o proveedor a utilizar.
- En la siguiente pantalla tendremos que elegir el driver que queremos utilizar para realizar la conexión a la base de datos. En este caso seleccionamos el driver de Oracle con soporte para XA o Transacciones Distribuidas. en caso de no ser requerido una conexión XA solo seleccionamos la driver que no dice XA y listo.
- En la siguiente pantalla solo presionamos Next
- Es tiempo de configurar el acceso a la base de datos pues en esta pantalla tendremos que poner el nombre de la base de datos,host,puerto,suario/password y presionamos Next para continuar.
- La siguiente pantalla nos confirma la clase a utilizar para la conexión y el String de conexión, a qui solo nos queda presionar en Test Configuration para asegurarnos de que los datos de conexión son correctos. continuamos con Next.
- En este punto los datos de conexión son correctos y solo falta desplegar el DataSource por lo que Weblogc nos pide seleccionar las instancias o servidores en los cuales nuestro DataSource estará presente, En mi caso solo tengo un servidor por lo que solo selecciono AdminServer. Finalmente presionamos Finish y nuestro DataSource estará listo para utilizarse.
- WebLogic nos regresa a la lista de DataSource donde podremos ver nuestro data source. Nota:Si estas con una configuración de modo productivo tendrás que dar commit a la actividad que creaste hace un momento en la parte superior izquierda de la pantalla.
Con esto finalizo y espero que les sea de utilidad.
Hi, greetings from colombia. You could help me with an answer about how to get a data source from java class. I am trying and trying and trying and nothing. My jndi name: jdbc_jndi, data source name: jdbc_data_Source. The error: “javax.naming.NoInitialContextException: Need to specify class name in environment or system property,..”, my code is:
package java_conexion;
import java.sql.*;
import javax.naming.Context;
import javax.naming.InitialContext;
public class J03_conexion_03 {
public static void main(String[] args) {
Connection connection=null;
try {
Context ctx=new InitialContext();
javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup(“jdbc_data_Source”);
Connection con=ds.getConnection();
Statement stat = connection.createStatement();
String sentencia_sql_consultar_general = “SELECT * FROM USUARIOS”;
ResultSet rs2 = stat.executeQuery(sentencia_sql_consultar_general);
while (rs2.next()) {
System.out.println( rs2.getString(“nom”) );
}
stat.close();
connection.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
}
Hola Carlos.
El problema es muy simple, cuando tu inicializas la clase
Context ctx=new InitialContext();
desde un métodomain
o desde una contexto fuera del servidor, elInitialContext
no se inicializa correctamente, para tu poder obtener recursos por medio de JNDI desde fuera del servidor tienes que indicarle alInititalContext
los parámetros de conexión con el servidor, para saber que parámetros enviarle te invito a que accedas a la siguiente URL http://docs.oracle.com/javase/jndi/tutorial/basics/prepare/initial.htmlPor otra parte, si tu intentas acceder a los recursos por medio del
InitialContext
desde dentro del servidor como por ejemplo en un Servlet, EJB, Webservices, etc. veras que elInitialContext
como lo tienes definido funcionara perfectamente.Saludos.
Muchas gracias Oscar por la pronta respuesta que efectivamente me hace tener en cuenta desde donde quiero acceder al data source si dentro o fuera del server, claro, tiene razón. Voy a revisar bien. El link recomendado no funciona. saludos y gracias.
Acabo de corregir el link, por favor intenta de nuevo http://docs.oracle.com/javase/jndi/tutorial/basics/prepare/initial.html
Como comentario adicional, una buena práctica es que los data source inicialicen con jdbc/ por dos razones: la primera es muho más descriptivo el nombre, ya que nos dice rápidamente que se trata de un DataSource y la segunda es que hay menos posibilidades que colicione con algún otro JNDI de otro tipo de recurso, recurda que el JNDI es un identificador único de recursos en todo el servidor.
Bien, gracias. Lo tendré presente.
Buenos días Oscar. Quería molestarlo y hacerle una consulta. Como puedo sacar una copia de las aplicaciones de ejemplo que he hecho en jdev11. No encuentro las carpetas. Recuerdo que en jdev10 era solo ir a jdevstudio10134-B4270jdevmywork. Voy a reinstalarlo. Por ahora me rindo con lo del Data Source. Ayer inicié mis vacaciones del trabajo y tendré unas cuantas semanas para seguir revisando todo esto. saludos, gracias.
Muchas gracias. Ya tengo mis dos opciones de revisión, dentro o fuera del servidor, como usted me explicó. saludos
Buenos días Oscar. Quería molestarlo y hacerle una consulta. Como puedo sacar una copia de las aplicaciones de ejemplo que he hecho en jdev11. No encuentro las carpetas. Recuerdo que en jdev10 era solo ir a jdevstudio10134-B4270jdevmywork. Voy a reinstalarlo. Por ahora me rindo con lo del Data Source. Ayer inicié mis vacaciones del trabajo y tendré unas cuantas semanas para seguir revisando todo esto. saludos, gracias.
Oscar, ya resolví la consulta de las copias de las aplicaciones. Las dejó en UsersLCRAMIREZCDocumentsJDevelopermywork , seguramente no me fijé en la configuración al instalarlo. saludos.
De igual forma puedes revisar la URL en donde se creó el proyecto al entrar a las propiedades del proyecto, para lo cual solo realizamos un click derecho sobre el proyecto en cuestión y listo, en la primera opción del menú izquierdo encontraras la URL.
Saludos.
Bien, lo acabo de ver, lo cambiaré. Gracias saludos.
Tengo 20 días de vacaciones. Oscar, quisiera saber si tengo un limite de preguntas que pueda hacer en este blog, o podría consultarle abiertamente, obviamente con la espera correspondiente. Saludos
No hay límite. Pregunta con toda confianza.
Oscar buenos días, como está. Quería consultarle sobre este error generado en una JSP: “no tag library could be found with this uri”. Tengo entendido que se genera porque no empata el atributo uri con el que se encuentra en el archivo descriptor .tld. Quisiera saber como lo puedo configurar en mi ventana del web.xml, sección “tag libraries” en jdeveloper11g, y como sé cual archivo .tld se debe cargar, en donde está ubicado. Por otro lado, quería recomendarle por favor si tiene o sabe de alguna guía con ejemplos cortos sobre el envío/manejo de datos desde jsp con servlets DAO. Ya superé lo del Data Source, ya pude hacer la conexión desde weblogic. Pero ahora quiero usando la conexión con el Data Source capturar datos en una JSP (o enviarlos desde una clase) y manejarlos con un servlet que los reciba con DTO y los procese con DAO para insertarlos en la DB. He encontrado unos ejemplos que son muy extensos y tienen cosas adicionales que me confunden y no me dejan ver la esencia básico de lo que necesito. Gracias saludos.
Hola Luis, sin ver tu código es complicado saber con precisión que está pasando, lo qué te puedo decir es que probablemente desde tu IDE estas usando una versión distinta que la que soporta el Runtime del Weblogic, lo que te propongo que realices para validar si este es el problema es que agregues la Liberia jstl.jar que está utilizando desde el IDE al paquete WEB-INF/lib de tu proyecto, es importante que cuando generes el War, esta Liberia se incluya, deploya y veremos si efectivamente este fue el problema.
Con respecto a lo del JSP, de momento no tengo nada en mi blog que hable de esto, pero te puedo invitar a que veas la siguiente página (http://www.tutorialspoint.com/jsp/jsp_database_access.htm) en donde hablan de cómo realizar las operaciones básicas de los JSP.
Voy a revisar lo recomendado. De otro lado acabando de ver la página recomendada sobre operaciones a la DB desde la JSP, me sorprendió. Pero qué es mejor, hacer esas operaciones desde un servlet usando DAO, o desde una clase, o desde la JSp?. La verdad no había tenido oportunidad de verlas dentro de la JSP, es algo nuevo. Pero según lo que he leido, esto mezcla la capa de presentación con la persistencia. Pero está muy interesante. saludos, y gracias
Realizar la persistencia desde un DAO obedece a la famosa arquitectura de 3 capas, en donde tienes una capa de presentación, una segunda de negocio y la tercera la capa de persistencia. En este caso el DAO representa la tercera capa. Si hablamos de buenas prácticas y ventajas, desde luego que persistir desde un DAO sería mucho mejor, aun que requiere un conocimiento un poco superior, si lo que quieres es aprender a guardar en base de datos, y estas trabajando en un proyecto didáctico, sería buena opción que lo hagas directamente y ya que te sientas seguro pases a implementar un arquitectura de 3 capas.
Si si de acuerdo, por eso es que busco ejemplos muy sencillos, los entiendo y luego voy ampliando y conociendo mas. gracias, saludos
Hola Oscar. Hice la copia del jstl.tl en el directorio mas semejante al que usted me indicó: “C:UsersLCRAMIREZCDocumentsJDevelopermyworkServletBasicoDaoProject1public_html”, pero no me funcionó. El foldercito WEB-INF/ si aparece dentro del Application navigator del jdev11g, pero en las carpetas en el exploraodor no la encontré. En Fin, dado que usted me dijo que era un jstl, consulté y encontré que había que adicionarle al proyecto las JSP Tag Libraries en las propiedades del proyecto enb jdev11g, y ahi aparecen todas, incluida la jstl Core que era la del error de la JSP, ya me corrió la JSP. Voy a seguir revisando mi ejemplo. Gracias, saludos.
Que tal Oscar como está. Quería consultarle sobre el tema de los DAO. Ya hice mis ejemplos DAO con clases sencillas, y luego otro ejemplo usando una interface que contiene todas las operaciones para aplicar con el DAO. He visto unos ejemplos usando servlets, y que también usan la interface que contiene todas las operaciones para aplicar con el DAO. Sé que muchas cosas se pueden hacer con diferentes técnicas, pero mi pregunta es: si decido usar servlets con DAO es porque principalmente mi aplicación será distribuida o será accedida por varios usuarios por red o por internet?, o si decido usar clases normales y la interface es porque mi aplicación será local/standalone?, o esto no tiene nada que ver?, o yo podría para una aplicación distribuida y montada sobre internet usar mis clases normalitas sin servlets?. Gracias, saludos.
Que pregunta más interesante, te comento que esto que preguntas es más común de lo que imaginas cuando un empieza con esto del JavaEE.
Primero que nada te comento que utilizar un Servlet como DAO no es una buena práctica, debido a que la naturaleza del Servlet es la de servir páginas web o servir como puente entre el navegador y el servidor, el Servlet básicamente lo que hace es construir la página web de forma dinámica basándose en recursos externos como pueden ser los parámetros de entrada o consultas a base de datos, lo que tú puedes hacer es seguir utilizando tu servlet pero delegar la responsabilidad de acceso a datos a las clases que ya tienes, de esta forma separa la lógica de acceso a datos con la capa de presentación y controles.
Por otra parte, hablar de aplicaciones distribuidas es un tema mucho más complejo y te puedo decir que está en la sima del aprendizaje Java, ya que son muchísimos factores lo que hay que tener en cuenta para que un aplicación sea distribuida y funcione correctamente, pero si estas interesado en crear componentes de BackEnd te recomiendo que le des una lectura a la especificación de EJB 3 la cual para mí es la mejor para componentes del lado del servidor.
Saludos.
Es decir, como dijo usted, para fines didacticos, y ahora como buena practica, puedo dejar mis clases normalitas e interface para que manejen el DAO, y el servlet (que no debe contener ni DAO ni nada que opere sobre la DB) solamente para hacer las páginas dinámicas o llamar a las JSP ?. Gracias por los comentarios. Voy a ver como me sale el ejemplo con servlet. Usted conoce sobre el framework ADF?, tendré que implementarlo en mis ejercicios, pero será más adelante. le recomiendo algo para pre Dummies, para leer mas adelante. Saludos.
Es correcto, los servlet o jsp úsalos solo para construir tu página y utiliza tus clases para el acceso a datos, con respecto al framework de ADF la verdad yo he trabajado con la versión 11g y he tenido una muy mala experiencia, es un framework con muchos bugs y muy lento en tiempo de ejecución, aunque destaco que tiene componentes gráficos muy potentes. Desconozco si la versión de ADF 12c mejore muchas de estas cosas, pero en mi experiencia no lo recomiendo.
Que pena Oscar le hago la útima consulta para aclarar algo. Es que acabo de ver este código de un servlet (aunque no es el que voy a estudiar) que está referenciado en un web.xml (se llama desde una JSP) y lo que veo es que el método del servlet está haciendo operaciones pero sobre el DTO, aun asi el servlet sigue separando la lógica con el acceso a la DB, pues los DTO son un nivel intermedio entre la BD y un componente, cierto?.
protected void process(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Employee employee = new Employee();
employee.setEmpNo(Integer.parseInt(request.getParameter(“empNo”)));
employee.setEmpName(request.getParameter(“empName”));
employee.setEmpSal(Long.parseLong(request.getParameter(“empSal”)));
EmployeeService employeeService = ServiceFactory.getEmployeeService();
RequestDispatcher dispatcher = null;
int status = 0;
…
referencia:
http://learnasmaster.blogspot.com.co/2014/01/jsp-servlet-service-dao-example.html
Muchas gracias. Me voy a trotar un rato. Saludos.
Es correcto, los DTO o Data Transfer Object son un patrón de diseño que permite crear representaciones más simples de los objetos de negocio o Entidades, las cuales son utilizadas para transferir datos entre el backend y la interface gráfica.
Que tal Oscar. Quería consultarle sobre el tema de autenticación de usuarios. He visto que una de las técnicas es dejarle ese trabajo al servidor de aplicaciones, en mi caso weblogic, y usar en la html/jsp una etiqueta action con “j_security_check”. Lo que he leído es que se deben crear primero los usuarios en la consola del servidor de weblogic para que la autenticación sea automática. Pero tengo una duda sobre su uso. Si yo tengo mi aplicación web y quiero tener en una tabla de mi DB los usuarios de mi aplicación web, concluiría yo que no debería usar la autenticación con “j_security_check”, lo digo porque si espero que mi aplicación sea usada por muchos usuarios no tendría entonces que ingresar a weblogic y ponerme a crear 20, 30 usuarios. O como funciona la técnica?, pues yo asumía que si quiero autenticar usuarios pues yo crearía una tabla en mi DB y con los datos del usuario desde html/jsp los consultaría en mi tabla de usuarios y ya. Esos usuarios que se crean en weblogic para ser autenticados son los que se logean para qué?, para hacer actividades administrativas o son usuarios externos que uno conoce previamente y por eso se deben crear previamente en weblogic. En mi caso de la vida real, las aplicaciones web de la entidad en la que trabajo requieren autenticación de usuarios, y la entidad en la que trabajo es de estadísticas a nivel nacional, de manera que realmente no me suena (“no me parece funcional”) tener que crear cientos de usuarios en weblogic, o será que quizás no se autentiquen con “j_security_check”?
Saludos, gracias y buena noche.
Hola Luis, tu pregunta es amplia y tratare de responderla de la forma más simple y concreta. Tú puedes decidir entre autenticar a tus usuarios directamente con el weblogic o crear una base de datos con tus usuarios. En realidad el resultado puede ser el mismo, sin embargo existen algunas ventajas/desventajas que ofrece cada uno. Si lo que quieres es una autenticación muy personalizada donde los privilegios se asignan a nivel recursos de la aplicación o tienes reglas muy complejas para determinar si un usuario tiene privilegios o no, entonces te recomiendo una autenticación por Base de datos, ya que desde aquí podrás implementar la lógica que gustes. Pero si este no es tu caso y los privilegios son por roles entonces te recomiendo utilizar un SQL Authentication Provider de weblogic, este te permitirá autenticarte mediante el weblogic pero a través de una base de datos custom. Lo que haces es configurar los query para que weblogic sepa cómo debe de logearce cada usuario, saber a qué rol pertenece, etc. Podrás encontrar más información en la siguiente liga: http://docs.oracle.com/cd/E14571_01/web.1111/e13707/atn.htm#SECMG190
muchas gracias Oscar, voy a revisar el link recomendado que parece estar bien completo. Estoy ahora pensando en reinstalar el jdeveloper pues no se que pasó y no puedo cargar la consola de weblogic, no he hecho absolutamente ningún cambio, ni siquiera de windows, …pero bueno, …tendré que tener weblogic disponible y ver el tema….saludos, y gracias.
Saludos Oscar. Le cuento que ya estoy involucrado con un proyecto web en mi trabajo, tenemos ADF, EJB, JSPX, poco a poco espero aprender bastante. Buena semana santa.
Eso es genial, y pues ya solo queda echarle ganas. Mucha suerte con tu nuevo proyecto.
Buen dia Carlos tengo creado un datasource (jdbc/as400DB)y su respectivo pool de conexiones (eis/DB/as400DB)en la consola del weblogic (10.3.6) apuntando a estos cree un dbadapter en jdeveloper y un respectivo proyecto en eclipse que desplegué en el servidor local. El hecho es que lo probe y funciono sin errores, pero actualmente trato de probarlo y me devuelve esta excepcion: La llamada ha dado como resultado un error: Fallo de llamada de servicio saliente de JCA con error de aplicación, excepción: com.bea.wli.sb.transports.jca.JCATransportException: oracle.tip.adapter.sa.api.JCABindingException: oracle.tip.adapter.sa.impl.fw.ext.org.collaxa.thirdparty.apache.wsif.WSIFException: servicebus:/WSDL/MiTigoApp/GetCorporateProfile/V1.0.0/UTILITY/JCA/GetCorporateProfile [ GetCorporateProfile_ptt::GetCorporateProfile(GetCorporateProfileInput_msg,GetCorporateProfileOutputCollection) ] – WSIF JCA Execute of operation ‘GetCorporateProfile’ failed due to: No se ha podido crear/acceder a la sesión de TopLink.
Uso Oracle Fusion Midleware 11g weblogic 10.3.6 y jdevelopr 11.1.7
Hola Naldy, por lo que comentas, el data sources ya te funcionaba y de la nada dejo de funcionar, es correcto?
si eso es así, entonces no se me ocurre más que dos cosas, o le movieron algo al Datasource/interface o hay algún problema con la conexión a la base de datos, yo probaría intentar conectarme a la base de datos mediante un cliente externo, utilizando los datos que están registrados en el DataSource, si la conexión se lleva a cabo, realizaría un ping desde el servidor donde esta el weblogic a la base de datos, para ver si las estas alcanzando por la red. Si el problema no nada de esto, entonces te sugiero entrar al /em y /sbconsole para revisar el historial de cambios de las interfaces/proxys, a lo mejor se fue un cambio indebido.
Esos son los primeras cosas que haría, si nada de esto es, entonces tendría que echarme un clavado a los logs para ver algo más de detalle del error. En el log puedes ver muchas más cosas que no verás en la consola de SOA Suite.
saludos y suerte.
Buenas tardes, Carlos efectivamente asi es de la nada dejo de funcionar. De acuerdo a lo que me aconsejaste verifique la conexión de manera externa y no se puede establecer aparentemente hay un problema con el ambiente de base de datos. De modo que hasta que se restablezca debo pensar que esa es la razón de la excepción.
Saludos y gracias por la atencion
Excelente, que bueno que te sirvieron mis consejos
Por cierto, mi nombre es Oscar no Carlos 😉
saludos.
Disculpa y gracias otra vez, eso pasa por escribir a varias personas a la vez y no prestar atención a los detalles
Buenas tardes Oscar,
Primero que todo felicitarte por el articulo, es bastante ilustrativo y claro.
Sé que éste articulo es de hace un tiempo, pero de pronto me puedes ayudar con algo que me pasa.
Resulta que tengo una aplicación en weblogic 12c que utiliza datasource creado allí mismo. En algunas ocasiones me ha salido el siguiente error:
Wed Jul 04 08:42:01 COT 2018
******************************************************************************************
java.sql.SQLException: JDBCDAOFactory: No pudo tomar una conexión del Pool de Conexiones.
at co.edu.eafit.database.JDBCDAOFactory.getConnection(JDBCDAOFactory.java:284)
at co.edu.eafit.database.JDBCDAOFactory.executeQuery(JDBCDAOFactory.java:789)
at co.edu.eafit.util.login.control.UsuarioDAOImpl.autenticarConApp(UsuarioDAOImpl.java:341)
at co.edu.eafit.util.login.control.UsuarioControl.autenticarConApp(UsuarioControl.java:144)
at co.edu.eafit.util.login.vista.UsuarioAction.ingresar(UsuarioAction.java:195)
at sun.reflect.GeneratedMethodAccessor291.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
at co.edu.eafit.control.EafitActionNoSesionAbs.dispatchMethod(EafitActionNoSesionAbs.java:69)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
at org.apache.struts.actions.MappingDispatchAction.execute(MappingDispatchAction.java:169)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at co.edu.eafit.control.EafitRequestProcessor.processActionPerform(EafitRequestProcessor.java:63)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:751)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:346)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:243)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3432)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3402)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2285)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2201)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1572)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
Este error según lo que se observa es porque alcanza el limite de conexiones establecido para el datasource, lo que me causa curiosidad es que yo realizo por la consola un reinicio del datasource pero el error sigue saliendo después de iniciarlo. Lo único que me ha funcionado es reiniciar la aplicación o en algunos casos el servidor.
Es esto normal?… no debería solucionarse con el reinicio del datasource?
Muchas gracias por lo que me puedas colaborar.
Hola Juan, lo observación es correcto, el datasource llega al límite de conexiones que es posible crear, por otra parte, puedes incrementar el límite de conexiones para mitigar este error, sin embargo, debes identificar si realmente necesitas más conexiones o la aplicación no está devolviendo las conexiones al Pool. Aumentar el límite de conexiones no servirá de nada si la app no regresa las conexiones, si acaso, prolongarás el tiempo con el que se presenta el error.
Buenas tardes Sr. Oscar muchas gracias por impartir sus conocimientos, en cual ruta se guardan los usuarios y claves que se crean para las conexiones de los data sources en el weblogic?.
Gracias
Hola Heidy, me imagino que te refieres en que lugar del disco/DB puedes recuperar el usuario/password, es correcto? bueno, la verdad tengo rato que no me meto tan de lleno al SOA Suite, y estoy un poco oxidado, así no recuerdo donde se graban, lo que si es que seguramente estarán encriptados, por lo que no podrás sacar el password así de fácil.
saludos
Buen dia Sr Oscar, me gustaria que me resolvieras una duda que tengo, que diferencia hay entre el DataSourceName con el XADataSourceName
XADatasource es para Datasources que soportan transacciones de dos fases (https://www.oscarblancarteblog.com/2014/09/19/data-base-2phase-commit-en-ambientes-distribuidos/), mientras que el DatasourceName es para Datasource normales.
Hola, que tal.
Me gustaria saber que puedo hacer con mi error, llevo varios dias intentando resolver
Despues de un tiempo deja de funcionar mi proyecto que esta en weblogic con jndi. Funciona correctamente por un tiempo y despues me muestra el siguente error.
java.sql.SQLException: RPC error
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1139)
Si elimino de mi JNDI el Destino y lo vuelvo a agregar ya vuelve a funcionar
Hola nuevamente, pudieran ser varias causas, y la verdad solo con esa descripción no puedo saber el error, tendrías que ver el log completo para comprender que error está lanzando.
Hola Cristina, el detalle del error es demasiado poco para saber la causa del error
Estimado Oscar, buenas tardes
Permítame hacerle una consulta, respecto a una migración de mi aplicativo hecho en en JDeveloper 10 y lo estoy migrando a JDeveloper 12.2. Me han salido bastantes inconsistencias que aparentemente son por algunas características que ya son obsoletas en la versión 12.2. Sin problema las he estado corrigiendo.
Sin embargo, la mas compleja que tengo y que me limita a poder avanzar en la migración es la siguiente:
En cualquier pantalla de captura o modificación o eliminación, “SI” permite realizar el evento y envía mensajes confirmación de la acción. Sin embargo, al refrescar la pantalla o consultar en BD no se realiza la acción de alta / modificación / eliminación. Lo mas extraño es que en la consola o LOG del aplicativo, no presenta ningún error.
Habrá usted tenido algún escenario de esta naturaleza??
Gracias por su amable atención.
Que tipo de aplicación es ADF?
Buenos dias,
Estoy weblogic 12c y tengo un ds que funciona bien, pero hay momentos que se queda sin conexiones quedan en estado no disponible, tiene la configuracion del ds un mecanismo para recuperar esas conexiones que se perdieron?, porque la unica forma de recuperarlas es mediante un reinicio del ds. Que propiedad me permite recuperar esas conexiones perdidas? Saludos
No creo tener una respuesta concreta a tu consulta, por que se puede deber a múltiples factores, pero yo comenzaría validando si la aplicación que consume las conexiones las está cerrando apropiedamente una vez que no sea requerida, eso hace que se sature el DataSource y se queden colgadas las conexiones.
Actualmente cuento consultoría para empresas, indicamente si requieres que los ayude de alguan manera.
saludos