3

すでに多くの質問が寄せられているため、ばかげているように見えることはわかっていますが、mysql データソースの構成に関する私の問題を解決しているものはありません。「Eclipse IDE」、「MySql データベース」、「Java 言語」を使用しています。context.xml を次のように構成しました

<?xml version="1.0" encoding="UTF-8"?>
<Context>
 <Resource name="jdbc/world" auth="Container" type="javax.sql.DataSource"
           maxActive="50" maxIdle="30" maxWait="10000"
           username="root" password="admin" 
           driverClassName="com.mysql.jdbc.Driver"
           url="jdbc:mysql://localhost:3306/world"/>
</Context>

そして web.xml として

<resource-ref>
<description>MySQL Datasource example</description>
<res-ref-name>jdbc/world</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

接続ファイル名 WorldCityBean.java で、両方の方法を試してみました

クラスに注釈を付けて InitialContext を使用しますが、まったく機能しません。

public class WorldCityBean {

@Resource(name="world")
private DataSource ds;

private Connection conn;

public void open() throws SQLException, NamingException{
    if(conn !=null)
    {
        return;
    }

//      Context ic = new InitialContext();
//      Context subcontext = (Context) ic.lookup("java:comp/env");
//      DataSource ds = (DataSource) subcontext.lookup("jdbc/world");

    conn = ds.getConnection();
}
}

そしてこの例外を与える

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from     fulfilling this request.

exception 
javax.servlet.ServletException: An error occurred performing resource injection on     managed bean city

root cause 
com.sun.faces.mgbean.ManagedBeanCreationException: An error occurred performing     resource injection on managed bean city

root cause 
com.sun.faces.spi.InjectionProviderException:         com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to     inject Res-Ref-Env-Property: world@javax.sql.DataSource@ resolved as: jndi:     world@res principal: null@mail: null
No Runtime properties
Database Vendor : null
Create Tables at Deploy : false
Delete Tables at Undeploy : false into class com.corejsf.WorldCityBean

root cause 
com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting     to inject Res-Ref-Env-Property: world@javax.sql.DataSource@ resolved as:     jndi: world@res principal: null@mail: null
No Runtime properties
Database Vendor : null
Create Tables at Deploy : false
Delete Tables at Undeploy : false into class com.corejsf.WorldCityBean

root cause 
javax.naming.NamingException: Lookup failed for 'java:comp/env/world' in             SerialContext  [Root exception is javax.naming.NamingException: Lookup failed for 'world'     in SerialContext  [Root exception is javax.naming.NameNotFoundException: world not found]]

root cause 
javax.naming.NamingException: Lookup failed for 'world' in SerialContext  [Root     exception is javax.naming.NameNotFoundException: world not found]

root cause 
javax.naming.NameNotFoundException: world not found

note The full stack traces of the exception and its root causes are available in the     GlassFish Server Open Source Edition 3.0.1 logs.

--------------------------------------------------------------------------------

GlassFish Server Open Source Edition 3.0.1
4

1 に答える 1

1

context.xml の使用は、Glassfish で JDBC リソースを構成する標準的な方法ではありません。デプロイメント記述子 ( Stackoverflow リンク)を使用して構成する方法はありますが、Web コンソールを使用することをお勧めします。ログインし、[リソース] に移動して、接続プールと JDBC リソースを定義します ( Glassfish 3.0.1 へのリンク)。そのようにすると、SQL 接続をテスト/ping し、すべてのパラメーターが正しいかどうかを確認できます。正しいパラメーターを指定したことが確実な場合は、通常の注入で十分ですが、次のように指定する必要があることに注意してください。

@Resource(name="jdbc/world")

それ以外の

@Resource(name="world")
于 2013-01-26T11:22:51.657 に答える