2012-04-02 3 views
0

У меня есть консольное приложение маленький Java, который создает необработанное соединение JDBC следующим образом и возвращает егоOracle JDBC Datasource - ORA-00942: таблица или представление не существует

public static Connection createConnection(Properties props) { 
    Connection conn = null; 
    { 
     try 
     { 
     Class.forName(props.getProperty("jdbcClass")); 
     conn = DriverManager.getConnection(
      props.getProperty("jdbcUrl"), 
      props.getProperty("username"), 
      props.getProperty("password") 
      ); 
     return conn; 
     } 
     catch (ClassNotFoundException e) 
     { 
     e.printStackTrace(); 
     } 
     catch (SQLException e) 
     { 
     e.printStackTrace(); 
     } 
    } 
    return null; 
} 

с файлом свойств, который выглядит следующим образом :

jdbcClass=oracle.jdbc.xa.client.OracleXADataSource 
jdbcUrl=jdbc:oracle:thin:@stiddb01:1538:DSTD 
username=***** 
password=***** 

Затем я извлекаю простой выбор * из таблицы и анализирую результаты. Все это прекрасно работает до этого момента.

Затем я создал небольшое приложение TOMCAT JSP/JSTL с этим в моем файле context.xml для источника данных:

<Context> 
    <WatchedResource>WEB-INF/web.xml</WatchedResource> 
    <Resource 
     name="jdbc/devdb" 
     auth="Container" 
     type="javax.sql.DataSource" 
     maxActive="100" 
     maxIdle="30" 
     maxWait="10000" 
     username="******" 
     password="******" 
     driverClassName="oracle.jdbc.xa.client.OracleXADataSource" 
     url="jdbc:oracle:thin:@stiddb01:1537:DSTD"> 
    </Resource> 
</Context> 

И это в моем web.xml:

<resource-ref> 
     <description>Dev Environment</description> 
     <res-ref-name>jdbc/devdb</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
</resource-ref> 

с следующий JSP/JSTL код в JSP называется query.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

<sql:query var="rs" dataSource="jdbc/devdb"> 
    select * from "ST_FINANCE"."STF_FINANCE_REQUEST" 
</sql:query> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <title>Insert title here</title> 
</head> 
<body> 
    <h2>Results</h2> 

    <c:forEach var="row" items="${rs.rows}"> 
     ${row.FINANCE_REQUEST_NO}<br /> 


    </c:forEach> 
</body> 
</html> 

Тогда я получаю эту ошибку, когда я попал на страницу :

ORA-00942: table or view does not exist 

Почему мое консольное приложение работает отлично, но webapp поручает? Единственное, что я мог заставить его работать, это сделать таблицу доступной для публики в БД, но мы не можем это сделать на наших производственных серверах ...

+0

Не совсем уверен, что вы подразумеваете под общедоступным доступом. Не могли бы вы рассказать? –

+0

Является ли ваше консольное приложение Java доступным для той же базы данных, что и приложение jsp/jstl tomcat? И URL, и имя пользователя/пароль кажутся разными в двух приложениях. –

ответ

0

Похоже, что два приложения обращаются к различным базам данных как разные пользователи. Попробуйте предоставить привилегии выбора в ST_FINANCE.STF_FINANCE_REQUEST для пользователя dewet1_d в базе данных, к которой обращается приложение jsp/jstl tomcat.

 Смежные вопросы

  • Нет связанных вопросов^_^