以下のJSPがあります。エラー:javax.naming.NoInitialContextException:ハッシュテーブルで指定されたファクトリを使用してInitialContextを作成できませんでした
<!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> </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>
[ルート例外はjava.lang.NullPointerExceptionがあります]。 2つのJARSを追加した後でエラー のエラーが発生しました。エラー:javax.naming.ConfigurationException:java:nameスペースの名前空間アクセサーが設定されていません。考えられる原因は、ユーザーがJNDIコンテキスト・メソッド・コールでjava:URL名を指定していても、J2EEクライアントまたはサーバー環境で実行されていないことです。
ポート8080個の
モジュールにプレビューサーバーの起動: customTabFromKb_1(/ customTabFromKb_1) プロキシ(/プロキシ)
NMSV0307E:Javaの:URL名を使用したが、ネーミングは、Javaを処理するように設定されていません:URLの名前。考えられる原因は、J2EE以外のクライアントまたはサーバー環境でjava:URL名を指定しようとしたときにエラーが発生した可能性が高い原因です。 ConfigurationExceptionをスローします。 javax.naming.ConfigurationException:java:name領域の名前空間アクセサーが設定されていません。考えられる原因は、ユーザーがJNDIコンテキスト・メソッド・コールでjava:URL名を指定していても、J2EEクライアントまたはサーバー環境で実行されていないことです。 com.ibm.ws.naming.urlbase.UrlContextFactory.getObjectInstanceでcom.ibm.ws.naming.java.javaURLContextFactory.isNameSpaceAccessable(javaURLContextFactory.java:109) (UrlContextFactory.java:85)するjavax.namingで で。 spi.NamingManager.getURLContext(NamingManager.java:660) at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:422) at javax.naming.InitialContext.lookup(InitialContext.java:436) at org.apache。 jsp.Test_jsp._jspService(Test_jsp.java:162)org.apache.jasper.runtime.HttpJspBase.serviceで (HttpJspBase.java:97)javax.servlet.http.HttpServlet.serviceで (HttpServlet.java:820) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) (javax.servlet.http.HttpServlet)。サービス(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler。 handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) at org.mortbay.jetty.handle r.HandlerList.handle(HandlerList.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) (org.mortbay.jetty.HttpConnection.java:542) atorg.mortbayでorg.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) でorg.mortbay.jetty.HttpParser.parseAvailableでparseNext(HttpParser.java:549) (HttpParser.java:212) 。 NMSV0307E:java:URL名が使用されましたが、Namingは使用されていました。 URL名:Javaのを処理するように構成されていません。考えられる原因は、J2EE以外のクライアントまたはサーバー環境でjava:URL名を指定しようとしたときにエラーが発生した可能性が高い原因です。 ConfigurationExceptionをスローします。 javax.naming.ConfigurationException:java:name領域の名前空間アクセサーが設定されていません。考えられる原因は、ユーザーがJNDIコンテキスト・メソッド・コールでjava:URL名を指定していても、J2EEクライアントまたはサーバー環境で実行されていないことです。 com.ibm.ws.naming.urlbase.UrlContextFactory.getObjectInstanceでcom.ibm.ws.naming.java.javaURLContextFactory.isNameSpaceAccessable(javaURLContextFactory.java:109) (UrlContextFactory.java:85)するjavax.namingで で。 spi.NamingManager.getURLContext(NamingManager.java:660) at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:422) at javax.naming.InitialContext.lookup(InitialContext.java:436) at org.apache。 jsp.Test_jsp._jspService(Test_jsp.java:162)org.apache.jasper.runtime.HttpJspBase.serviceで (HttpJspBase.java:97)javax.servlet.http.HttpServlet.serviceで (HttpServlet.java:820) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) (javax.servlet.http.HttpServlet)。サービス(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler。 handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) at org.mortbay.jetty.handle r.HandlerList.handle(HandlerList.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) org.mortbay.jetty.HttpParser.parseNextでorg.mortbay.jetty.HttpConnection $ RequestHandler.headerComplete(HttpConnection.java:924) (でorg.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) で HttpParser.java:549) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.jetty。 org.mortbay.thread.QueuedThreadPool $ PoolThread.runでbio.SocketConnector $ Connection.run(SocketConnector.java:228) (QueuedThreadPool.java:582)
この点で私を助けてください!
JSPでJavaコードを使用しないでください。リンク:http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files –
ありがとうございます。私は、私のJavaクラスでも、JNDIルックアップを使用して接続を取得しようとしているときに同じエラーが発生していることを知りたいと思います。助けてください 。 – user3607647
コードを再投稿してください。 –