User Tools

Site Tools


java:jsp

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
java:jsp [2010/01/06 22:03] rlunarojava:jsp [2022/07/27 16:42] rlunaro
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>
  
-**¿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.+==== WEB-INF/lib ====
  
-==== Descargar las librerías y ficheros JSTL ====+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. 
  
-En el sitio web de sun [[https://jstl.dev.java.net/]] se pueden encontrar las descargas que necesitamos: se trada de dos archivos jar: jstl-api-1.2.jar (o versión posterior) y jstl-impl-1.2.jar.  
  
-He comprobado que en el fichero jstl-impl-1.2.jar están las librerías tld, por lo que entiendo que ya no hace falta instalarlos tal y como dice en otras fuentes.  
  
-==== 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. 
  
-Y con eso a mí me ha funcionado. 
  
  
  
  
java/jsp.txt · Last modified: 2022/12/02 22:02 by 127.0.0.1