User Tools

Site Tools


java:jsp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
java:jsp [2010/01/06 16:35] – creado rlunarojava:jsp [2022/12/02 22:02] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Java Server Pages ====== ====== Java Server Pages ======
  
-===== Error "La uri absoluta no puede resolverse" =====+===== JNDI de Oracle + Tomcat =====
  
-Acabo de instalar Tomcat 6y al realizar la primera prueba de páginas JSP me he encontrado +I don't know whybut the docummentation about **how to properly set a JNDI oracle entry in Tomcat** is not 
-con este desagradable error: +correctly specified. Many documentns scattered here and there, but no one with a full working, modern example. 
  
-<code> +In this page I will put the basic files and configuration needed to set a test page in Tomcat that loads a  
-Estado HTTP 500 -+simple JNDI with the oracle driver (no connection pooling by now).
  
-type Informe de Excepción+Moreover, here is the whole project, with dependencies: 
  
-mensaje+{{ :java:jndi_test.zip |}}
  
-descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.+===== Create a web application under tomcat webapps directory =====
  
-excepción+In this case, I've create a directory called "jndi_test". Under that directory, create "WEB-INF", "META-INF" and "WEB-INF\lib":
  
-org.apache.jasper.JasperExceptionLa uri absolutahttp://java.sun.com/jsp/jstl/core no puede resolverse o en web.xml o el los archivos jar desplegados con esta aplicaci???n +{{:java:jndi-test-directories.png?400|}} 
- org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51) + 
- org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409) +And now, put the following contents:  
- org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116) + 
- org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:315) +==== index.jsp ==== 
- org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:148) + 
- org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:431+<code jsp> 
- org.apache.jasper.compiler.Parser.parseDirective(Parser.java:494) +<!doctype html> 
- org.apache.jasper.compiler.Parser.parseElements(Parser.java:1444+<html lang="es"> 
- org.apache.jasper.compiler.Parser.parse(Parser.java:138) +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
- org.apache.jasper.compiler.ParserController.doParse(ParserController.java:216+<%@ page import="javax.naming.Context, 
- org.apache.jasper.compiler.ParserController.parse(ParserController.java:103+ javax.naming.InitialContext,  
- org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:154+ javax.sql.DataSource,  
- org.apache.jasper.compiler.Compiler.compile(Compiler.java:315+ java.sql.Connection, 
- org.apache.jasper.compiler.Compiler.compile(Compiler.java:295+ java.sql.Statement, 
- org.apache.jasper.compiler.Compiler.compile(Compiler.java:282+ java.sql.ResultSet, 
- org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586) + oracle.jdbc.driver.OracleDriver" %> 
- org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317+ 
- org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) +<h1>JNDI With Oracle test page</h1
- org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267+ 
- javax.servlet.http.HttpServlet.service(HttpServlet.java:717)+<p>Test that context class exists....</p> 
 +<% 
 + Context initCtx = new InitialContext(); 
 +%> 
 + 
 +<p>Check that the environment context can be loaded....</p> 
 +<% 
 + Context envCtx = (ContextinitCtx.lookup("java:comp/env"); 
 +%> 
 + 
 +<p>Check if our JNDI exist jdbc/my_simple_oracle_jndi...</p> 
 +<% 
 + DataSource jndi = (DataSourceenvCtx.lookup("jdbc/my_simple_oracle_jndi"); 
 +%> 
 + 
 +<p>Creamos una conexión de base de datos...</p> 
 +<% 
 +// Allocate and use a connection from the pool 
 +Connection conn = jndi.getConnection(); 
 +%> 
 + 
 +<p>Ejecutamos una consulta...</p> 
 +<% 
 +tryStatement cmd = conn.createStatement(){ 
 + ResultSet rs = cmd.executeQuery"select count(*) total, systimestamp now from df_cmn_aum_xx_tsk_job" ) 
 + rs.next(); 
 + out.println( "<p>" + rs.getLong("total"+ "</p>" ); 
 + out.println( "<p>" + rs.getDate("now"+ "</p>" ); 
 +
 +%> 
 + 
 +<p>Y finalmente cerramos la conexion....</p> 
 +<% 
 +// and finally, close the connection to be a good citizen 
 +conn.close()
 +%> 
 +</html>
  
-nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/6.0.18. 
 </code> </code>
  
 +==== WEB-INF\web.xml ====
 +
 +<code xml>
 +<?xml version="1.0" encoding="UTF-8"?>
 +<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 + xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
 + xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 
 + id="WebApp_ID" 
 + version="4.0">
 +
 +  <display-name>jndi_test</display-name>
 +  
 +  
 +
 +  <welcome-file-list>
 +    <welcome-file>index.jsp</welcome-file>
 + <welcome-file>index.html</welcome-file>
 +  </welcome-file-list>
 +
 +  <resource-env-ref>
 + <description>Pruebas jndi</description>
 + <resource-env-ref-name>jdbc/my_simple_oracle_jndi</resource-env-ref-name>
 + <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
 +  </resource-env-ref>
 +  
 +  
 +</web-app>
 +
 +
 +</code>
 +
 +==== META-INF\context.xml ====
 +
 +<code xml>
 +<?xml version="1.0" encoding="UTF-8"?>
 +<Context>
 +
 + <Resource name="jdbc/my_simple_oracle_jndi" 
 + auth="Container" 
 + type="javax.sql.DataSource"
 +        maxActive="100" 
 + maxIdle="30" 
 + maxWait="10000"
 +        username="YOUR-ORACLE-USERNAME" 
 + password="YOUR-ORACLE-PASSWORD" 
 + driverClassName="oracle.jdbc.driver.OracleDriver"
 +        url="jdbc:oracle:thin:@YOUR-ORACLE-HOST:YOUR-ORACLE-PORT/YOUR-ORACLE-SERVICE-OR-SID"/>
 +
 +</Context>
 +
 +
 +
 +</code>
 +
 +
 +==== WEB-INF/lib ====
 +
 +Put the contents of the JDBC oracle driver of choice **but removing the files xmlparserv2.jar and xmlparserv2_sans_jaxp_services.jar because they collide with the tomcat libs**. I've used Oracle 11's. This have been tested in Tomcat 8 and JDK 1.8. 
  
-**¿Cómo resolverlo??** 
  
-El problema es que no está instalado el soporte de las JSTL (Java Standard Template Library). Para instalar el soporte, he encontrado [[http://www.developer.com/java/ejb/article.php/1447551/An-Introduction-to-JSP-Standard-Template-Library-JSTL.htm|en esta página]] una explicación de cómo debe realizarse. 
  
-==== Descargar las librerías y ficheros JSTL ==== 
  
-En el sitio web de sun [[https://jstl.dev.java.net/]] se pueden encontrar las descargas que necesitamos.  
  
-==== Copiar los ficheros JAR de la JSTL al directorio "lib" de Tomcat ==== 
  
-Qué tontería: primero habrá que identificar cual es ese directorio "lib". En windows parece que es C:\Program Files\Apache Tomcat 4.0\webapps\ROOT\WEB-INF\lib, mientras que en SuSE linux es /usr/share/java/tomcat6. 
  
-AQUI ME QUEDO.  
  
  
java/jsp.1262792125.txt.gz · Last modified: 2022/12/02 22:02 (external edit)