次の仕様を使用してWebベースのアプリケーションを作成しています。Glassfishサーバー3.1.1-SQLServer2012 Express-Netbeans 7.01-JDK 1.7-SQLServer4.0用のJDBCドライバー
接続リソースと接続プールを作成し、Glassfish管理Webインターフェイスからプールに正常にpingを実行できます。次に、接続プールのxmlファイルにデータソース(データソース)を作成しました。
データソースをテストするには、WEB-INFフォルダーの外にテストJSPを作成し、前の手順で作成したデータソースを使用してDBレポートを追加します。
テストJSPを実行すると、次のエラーが発生します。
タイプ:例外レポート
メッセージ:
説明:サーバーで、この要求を実行できないと思われる内部エラー()が発生しました。
例外:org.apache.jasperException:java.lang.unsupportedOperationException:この操作はサポートされていません。
根本原因:java.lang.UnsupportedOperationException:この操作はサポートされていません。
私は過去2〜3日間、解決策をWebで検索してきましたが、見つけることができるすべての例は、例外の説明の「この操作はサポートされていません」の後に追加の詳細/エラーコードを提供します。
Glassfishを確認しましたが、上記のエラーに関する追加の詳細は提供されていません。
うまくいけば、誰かがこれと同じ問題を抱えていて、問題を解決することができました。
スタックトレースは次のとおりです。
INFO: RAR7114: Unable to get ClientInfo for connection
WARNING: StandardWrapperValve[jsp]: PWC1406: Servlet.service() for servlet jsp threw exception
java.lang.UnsupportedOperationException: This operation is not supported.
at com.microsoft.sqlserver.jdbc.SQLServerConnection.setClientInfo(SQLServerConnection.java:2890)
at com.sun.gjc.spi.jdbc40.ConnectionHolder40.setClientInfo(ConnectionHolder40.java:322)
at com.sun.gjc.spi.jdbc40.ConnectionHolder40.close(ConnectionHolder40.java:530)
at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doFinally(QueryTagSupport.java:278)
at org.apache.jsp.test.newjsp_jsp._jspx_meth_sql_query_0(newjsp_jsp.java:126)
at org.apache.jsp.test.newjsp_jsp._jspService(newjsp_jsp.java:68)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
ヘルプが適用されます。誰かが推薦を持っているなら、私は別の接続方法を使うところまで来ています。ありがとう!
JSPtest.jsp。データベースに存在するビューからクラスを作成するので、JSPからのSQLは比較的単純になります。このレポートは、JSPがSQLServerデータベースと通信できることを確認するためのテストです。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%--
Document : test
Created on : Jan 11, 2013, 8:06:27 PM
Author : Developer
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<sql:query var="result" dataSource="jdbc/TestAddOn">
select * from tblCustomer
</sql:query>
<table border="1">
<!-- column headers -->
<tr>
<c:forEach var="columnName" items="${result.columnNames}">
<th><c:out value="${columnName}"/></th>
</c:forEach>
</tr>
<!-- column data -->
<c:forEach var="row" items="${result.rowsByIndex}">
<tr>
<c:forEach var="column" items="${row}">
<td><c:out value="${column}"/></td>
</c:forEach>
</tr>
</c:forEach>
</table>
</body>
</html>
XMLリファレンス
<resource-ref>
<res-ref-name>jdbc/TestAddOn</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
Glassfishリソースxml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
<jdbc-resource enabled="true" jndi-name="jdbc/TestAddOn" object-type="user" pool-name="TestAddOnConnectionPool">
<description/>
</jdbc-resource>
<jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.microsoft.sqlserver.jdbc.SQLServerDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="TestAddOnConnectionPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.ConnectionPoolDataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
<property name="URL" value="jdbc:sqlserver://Localhost:1433;databaseName= MyDatabaseName"/>
<property name="User" value="*******"/>
<property name="Password" value="*******"/>
</jdbc-connection-pool>
</resources>