2016-05-26 3 views
0

Ich habe unter JSP.Fehler: javax.naming.NoInitialContextException: Fehler beim Erstellen von InitialContext unter Verwendung der in hashtable angegebenen

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
 

 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
 
<%@page import="java.sql.*"%> 
 
<%@page import="javax.sql.*"%> 
 
<%@page import="java.util.*"%> 
 
<%@page import="javax.naming.*"%> 
 
<%@page import="java.io.*" %> 
 

 
<html> 
 
<head> 
 
<%! 
 
\t class LinkedProperties extends Properties { 
 

 
\t \t private final LinkedHashSet<Object> keys = new LinkedHashSet<Object>(); 
 

 
\t \t public Enumeration<Object> keys() { 
 
\t \t \t return Collections.<Object>enumeration(keys); 
 
\t \t } 
 

 
\t \t public Object put(Object key, Object value) { 
 
\t \t \t keys.add(key); 
 
\t \t \t return super.put(key, value); 
 
\t \t } 
 
\t } 
 

 
\t public String getData(ResultSet rs, String tableName) throws Exception { 
 
\t \t String ret ="<div class='tname'>"+tableName+"</div>"; 
 
\t \t ret+="<table border=1>"; 
 
\t \t ret+="<tr>"; 
 
\t \t ResultSetMetaData md = rs.getMetaData() ; 
 
\t \t for(int i = 1; i <= md.getColumnCount(); i++) { 
 
\t \t \t if(md.getColumnLabel(i).equals("UPDATE_DATE") || md.getColumnLabel(i).equals("Update Date")) { 
 
\t \t \t \t ret = ret + "<th class='upd'>"+ md.getColumnLabel(i) + "</th>"; \t \t 
 
\t \t \t } else if(md.getColumnLabel(i).equals("ASSIGNED_TO") || md.getColumnLabel(i).equals("Assigned To")) { 
 
\t \t \t \t ret = ret + "<th class='upd'>"+ md.getColumnLabel(i) + "</th>"; \t \t 
 
\t \t \t } else if(md.getColumnLabel(i).equals("UPDATED_BY") || md.getColumnLabel(i).equals("Updated By")) { 
 
\t \t \t \t ret = ret + "<th class='upd'>"+ md.getColumnLabel(i) + "</th>"; \t \t 
 
\t \t \t } else { 
 
\t   \t ret = ret + "<th>"+ md.getColumnLabel(i) + "</th>"; \t \t 
 
\t   } \t 
 
     } 
 
     ret+="</tr>"; 
 
\t \t int cnt = 0; 
 
\t \t while(rs.next()) 
 
     { 
 
\t \t \t cnt++; 
 
\t \t \t ret+="<tr>"; 
 
\t \t \t for(int i = 1; i <= md.getColumnCount(); i++) 
 
\t \t \t { 
 
\t \t \t \t if(rs.getString(i) == null) { 
 
\t \t \t \t \t ret = ret + "<td>&nbsp;</td>"; \t \t 
 
\t \t \t \t } else { 
 
\t \t \t \t \t ret = ret + "<td>"+ rs.getString(i) + "</td>"; \t \t 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t \t ret+="</tr>"; 
 
     } \t \t 
 
\t \t if(cnt == 0) return ""; 
 
     ret+="</table><BR/>"; 
 
     return ret; 
 
\t } 
 
%> 
 
<%! 
 
\t public String execute(Connection conn, String str, String tableType) throws Exception { 
 
\t \t Statement stmt = null; 
 
\t \t ResultSet rset = null; 
 
\t \t try { 
 
\t \t \t stmt = conn.createStatement(); 
 
\t \t \t rset = stmt.executeQuery(str); 
 
\t \t \t return getData(rset, tableType); 
 
\t \t } catch (Exception exp) { 
 
\t \t \t throw exp; 
 
\t \t } finally { 
 
\t \t \t try { rset.close(); } catch (Exception ignore) {} 
 
\t \t \t try { stmt.close(); } catch (Exception ignore) {} 
 
\t \t } 
 
\t } 
 
%> 
 
    
 
<% 
 
String key, val; 
 
String sql = ""; 
 
String ret = ""; 
 
Connection conn = null; 
 
try { 
 
\t 
 
\t String typ = "role";//request.getParameter("t"); 
 
\t if(typ==null) throw new Exception("Type is blank"); 
 
\t if(!typ.equals("role") && !typ.equals("produit")) { 
 
\t \t throw new Exception("Invalid Type"); 
 
\t } 
 
\t 
 
\t InputStream stream = application.getResourceAsStream("/tasksdisplay.properties"); 
 
\t LinkedProperties props = new LinkedProperties(); 
 
\t props.load(stream); 
 

 
\t LinkedHashMap<String, String> mapSQL = new LinkedHashMap<String, String>(); 
 
\t 
 
\t String dbname = "mdmtrg01-CMX_ORS";//request.getParameter("d"); 
 
\t if(dbname == null) { 
 
\t \t dbname = "mdmtrg01-CMX_ORS"; 
 
\t } 
 
\t 
 
\t String dbJNDIName = "java:jdbc/siperian-mdmtrg01-cmx_ors-ds";//System.getProperty(dbname); 
 
\t if(dbJNDIName == null) { 
 
\t \t throw new Exception("Invalid database name. Must set dbname in JBoss startup"); 
 
\t } 
 
\t 
 
\t Hashtable env = new Hashtable(); 
 
env.put(Context.INITIAL_CONTEXT_FACTORY, 
 
    "com.ibm.websphere.naming.WsnInitialContextFactory"); 
 
env.put(Context.PROVIDER_URL, "iiop://mdma302p.corpads.local:30305"); 
 
Context initialContext = new InitialContext(env); 
 
\t 
 
\t Context aContext = new InitialContext(env); 
 
\t DataSource aDataSource = (DataSource)aContext.lookup("java:jdbc/siperian-mdmtrg01-cmx_ors-ds"); 
 
\t //DataSource aDataSource = (DataSource)aContext.lookup(dbJNDIName); 
 
\t conn = (Connection)(aDataSource.getConnection()); 
 

 
\t for (Map.Entry<String,String> entry : mapSQL.entrySet()) { 
 
\t \t key = entry.getKey(); 
 
\t \t sql = entry.getValue(); 
 
\t \t ret = execute(conn, sql, key); 
 
\t \t %> 
 
\t \t \t <%=ret%> 
 
\t \t <% 
 
\t } 
 
%> 
 

 
<% 
 
} catch (Exception exp) { 
 
\t exp.printStackTrace(); 
 
\t String err = exp.toString(); 
 
\t err += "<BR/>sql##E:"+sql; 
 
%> 
 
\t Error:<%=err%> 
 
<% \t 
 
} finally { 
 
\t try { conn.close(); } catch (Exception ignore) {} 
 
} 
 
%> 
 

 
<style> 
 
.tname { 
 
\t color: red; 
 
\t font-size: 16px; 
 
\t font-weight:bold; 
 
} 
 

 
table{ 
 
\t font-family: Verdana; 
 
    font-size: 12px; 
 
    font-weight: normal; 
 
    text-align: center; \t 
 
} 
 

 
table th { 
 
\t color: #225F8E; 
 
} 
 

 
table td { 
 
\t background-color: #DBFCF5; 
 
} 
 

 
a { 
 
\t color: blue; 
 
} 
 

 
.upd { 
 
\t background-color: yellow; 
 
} 
 

 
</style> 
 

 
</head> 
 
</html>
Ich erhalte die folgenden Fehler: Fehler: javax.naming.NoInitialContextException: Fehler Initial mit Fabrik angegeben in hashtable {java.naming.provider.url = iiop erstellen: // localhost : 2809, java.naming.factory.initial = com.ibm.websphere.naming.WsnInitialContextFactory} [Stammausnahme ist java.lang.NullPointerException]

Ich benutze JDK1.7. Nach dem Hinzufügen der 2 JARS bekomme ich unter Fehler Fehler: javax.naming.ConfigurationException: Namespace-Accessor für den Java: Namespace wurde nicht festgelegt. Mögliche Ursache ist, dass der Benutzer einen Java: URL-Namen in einem JNDI-Kontextmethodenaufruf angibt, aber nicht in einer J2EE-Client- oder -Serverumgebung ausgeführt wird.

starten Vorschau-Server auf Port 8080

Module: customTabFromKb_1 (/ customTabFromKb_1) Proxy (/ Proxy)

NMSV0307E: Ein Java: URL-Name verwendet wurde, aber Naming wurde nicht Java zu handhaben konfiguriert : URL-Namen Die wahrscheinlichste Ursache ist ein Benutzer, der versucht, einen Java: URL-Namen in einer Nicht-J2EE-Client- oder -Serverumgebung anzugeben. Konfigurationsexzeption werfen. javax.naming.ConfigurationException: Der Name-Space-Accessor für den Bereich java: name wurde nicht festgelegt. Mögliche Ursache ist, dass der Benutzer einen Java: URL-Namen in einem JNDI-Kontextmethodenaufruf angibt, aber nicht in einer J2EE-Client- oder -Serverumgebung ausgeführt wird. bei com.ibm.ws.naming.java.javaURLContextFactory.isNameSpaceAccessable (javaURLContextFactory.java:109) bei com.ibm.ws.naming.urlbase.UrlContextFactory.getObjectInstance (UrlContextFactory.java:85) bei javax.naming. spi.NamingManager.getURLContext (NamingManager.java:660) bei javax.naming.InitialContext.getURLOrDefaultInitCtx (InitialContext.java:422) bei javax.naming.InitialContext.lookup (InitialContext.java:436) bei org.apache. jsp.Test_jsp._jspService (Test_jsp.java:162) bei org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:97) bei javax.servlet.http.HttpServlet.service (HttpServlet.java:820) bei org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:332) bei org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:314) bei org.apache.jasper.servlet.JspServlet.service (JspServlet.java:264) bei javax.servlet.http.HttpServlet. Service (HttpServlet.java:820) bei org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:511) bei org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:390) bei org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216) bei org.mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java:182) bei org.mortbay.jetty.handler.ContextHandler. handle (ContextHandler.java:765) bei org.mortbay.jetty.webapp.WebAppContext.handle (WebAppContext.java:418) bei org.mortbay.jetty.handle r.HandlerList.handle (HandlerList.java:49) bei org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:152) bei org.mortbay.jetty.Server.handle (Server.java:326) bei org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:542) bei org.mortbay.jetty.HttpConnection $ RequestHandler.headerComplete (HttpConnection.java:924) bei org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:549) bei org.mortbay.jetty.HttpParser.parseAvailable (HttpParser.java:212) bei org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:404) bei org.mortbay. jetty.bio.SocketConnector $ Connection.run (SocketConnector.java:228) bei org.mortbay.thread.QueuedThreadPool $ PoolThread.run (QueuedThreadPool.java:582) NMSV0307E: Ein Java: URL-Name wurde verwendet, aber Naming war nicht konfiguriert, um Java zu behandeln: URL-Namen. Die wahrscheinlichste Ursache ist ein Benutzer, der versucht, einen Java: URL-Namen in einer Nicht-J2EE-Client- oder -Serverumgebung anzugeben. Konfigurationsexzeption werfen. javax.naming.ConfigurationException: Der Name-Space-Accessor für den Bereich java: name wurde nicht festgelegt. Mögliche Ursache ist, dass der Benutzer einen Java: URL-Namen in einem JNDI-Kontextmethodenaufruf angibt, aber nicht in einer J2EE-Client- oder -Serverumgebung ausgeführt wird. bei com.ibm.ws.naming.java.javaURLContextFactory.isNameSpaceAccessable (javaURLContextFactory.java:109) bei com.ibm.ws.naming.urlbase.UrlContextFactory.getObjectInstance (UrlContextFactory.java:85) bei javax.naming. spi.NamingManager.getURLContext (NamingManager.java:660) bei javax.naming.InitialContext.getURLOrDefaultInitCtx (InitialContext.java:422) bei javax.naming.InitialContext.lookup (InitialContext.java:436) bei org.apache. jsp.Test_jsp._jspService (Test_jsp.java:162) bei org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:97) bei javax.servlet.http.HttpServlet.service (HttpServlet.java:820) bei org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:332) bei org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:314) bei org.apache.jasper.servlet.JspServlet.service (JspServlet.java:264) bei javax.servlet.http.HttpServlet. Service (HttpServlet.java:820) bei org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:511) bei org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:390) bei org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216) bei org.mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java:182) bei org.mortbay.jetty.handler.ContextHandler. handle (ContextHandler.java:765) bei org.mortbay.jetty.webapp.WebAppContext.handle (WebAppContext.java:418) bei org.mortbay.jetty.handle r.HandlerList.handle (HandlerList.java:49) bei org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:152) bei org.mortbay.jetty.Server.handle (Server.java:326) bei org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:542) bei org.mortbay.jetty.HttpConnection $ RequestHandler.headerComplete (HttpConnection.java:924) bei org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:549) bei org.mortbay.jetty.HttpParser.parseAvailable (HttpParser.java:212) bei org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:404) bei org.mortbay.jetty. bio.SocketConnector $ Connection.run (SocketConnector.java:228) bei org.mortbay.thread.QueuedThreadPool $ PoolThread.run (QueuedThreadPool.java:582)

Bitte helfen Sie mir in dieser Hinsicht!

+0

Sie sollten Java-Code in JSP vermeiden. Bitte beachten Sie den Link: http: //stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files –

+0

Vielen Dank. Ich möchte wissen, dass ich in meiner Java-Klasse auch den gleichen Fehler bekomme, während ich versuche, die Verbindung mithilfe von JNDI Lookup zu erhalten. bitte hilfe. – user3607647

+0

Könnten Sie Ihren Code bitte erneut posten? –

Antwort

0

Ihr Code ist unlesbar und kann nicht gewartet werden. Die Verwendung von Scriptlets (<% ..%>) in JSP wird dringend empfohlen. Sie sollten stattdessen JSTL (Java Standard Tag Library) verwenden, was die neue Konvention für die Auswertung ist und Präsentation von Geschäftsobjekten nach der Verarbeitung der Geschäftslogik.Hier gesagt, sollten Sie nie Geschäftslogik in JSP.JSPs dienen nur den Zweck der Präsentation für den Client.Sie ​​sollten wahrscheinlich MVC (Model View Controller) Design-Muster, um die Abhängigkeit zu entfernen zwischen Geschäftslogik und Präsentation.

Weitere Informationen hierzu finden here

Allerdings kommen zu Ihrem ursprünglichen Problem zu finden, ich glaube, das Gefäß mit Klasse (com.ibm.websphere.naming.WsnInitialContextFactory) nicht in Classpath Ihres Projektes. Möglicherweise müssen Sie den Client-Jar im Klassenpfad hinzufügen.

+0

Ich habe die Dateien com.ibm.ws.ejb.thinclient_8.5.0.jar und com.ibm.ws.orb_8.5.0.jar hinzugefügt. Jetzt bekomme ich einen anderen Fehler. – user3607647

+0

Fehler: javax.naming.ConfigurationException: Der Name-Space-Accessor für den Bereich "java: name" wurde nicht festgelegt. Mögliche Ursache ist, dass der Benutzer einen Java: URL-Namen in einem JNDI-Kontextmethodenaufruf angibt, aber nicht in einer J2EE-Client- oder -Serverumgebung ausgeführt wird. – user3607647

Verwandte Themen