2016-05-26 58 views
0

以下の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>&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>
私は以下のエラーを取得しています: エラー:javax.naming.NoInitialContextException:// localhostを:ハッシュテーブル{ます。java.naming.provider.url = IIOPで指定されたファクトリを使用してInitialContextを作成できませんでした。 :2809、のjava.naming.factory.initial = com.ibm.websphere.naming.WsnInitialContextFactory} IはJDK1.7を使用してい

[ルート例外は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)

この点で私を助けてください!

+0

JSPでJavaコードを使用しないでください。リンク:http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files –

+0

ありがとうございます。私は、私のJavaクラスでも、JNDIルックアップを使用して接続を取得しようとしているときに同じエラーが発生していることを知りたいと思います。助けてください 。 – user3607647

+0

コードを再投稿してください。 –

答えて

0

あなたのコードは判読不能であり、保守もできません。JSPでのスクリプトレット(%% ..%>)の使用は避けてください。評価のための新しい規約であるJSTL(Java標準タグライブラリ)そして、ビジネスlogic.Havingを処理した後、ビジネス・オブジェクトのプレゼンテーションは、あなただけclient.Youのためのプレゼンテーションの目的を果たすJSP.JSPsにビジネスロジックを維持することはありません、これはおそらく、依存関係を削除するにはMVC(モデルビューコントローラ)デザインパターンを採用すべきであると述べましたビジネスロジックとプレゼンテーションの間。

詳しい情報はhere

は、しかし、あなたの元の問題に来て見つけることができ、私はクラス(com.ibm.websphere.naming.WsnInitialContextFactory)を含むjarファイルは、プロジェクトのクラスパスにはないと思います。クラスパスにクライアントjarを追加する必要があるかもしれません。

+0

com.ibm.ws.ejb.thinclient_8.5.0.jarおよびcom.ibm.ws.orb_8.5.0.jarファイルを追加しました。今私は別のエラーを得ています。 – user3607647

+0

Error:javax.naming.ConfigurationException:java:nameスペースの名前空間アクセサが設定されていません。考えられる原因は、ユーザーがJNDIコンテキスト・メソッド・コールでjava:URL名を指定していても、J2EEクライアントまたはサーバー環境で実行されていないことです。 – user3607647

関連する問題