Tôi đang cố gắng làm một cái gì đó có vẻ đơn giản: thiết lập một nhóm nhỏ các kết nối cơ sở dữ liệu để một servlet (chỉ một) không tạo máy chủ của tôi ở 1 kết nối mỗi giây.jetty mysql kết nối cơ sở dữ liệu pooling
Trên Ubuntu 10.04
, với bản nâng cấp/cập nhật mới nhất, tôi đang sử dụng Eclipse Jetty 8.1.5.v20120716
. Tôi đang cố kết nối với máy chủ MySQL 5.1
.
servlet tôi được gọi là gcm
, vì vậy trong ${jetty}/contexts
, tôi có gcm.xml
tập tin này:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext">
<New id="jdbc/myds" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg></Arg>
<Arg>jdbc/myds</Arg>
<Arg>
<New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
<Set name="Url">jdbc:mysql://localhost:3306/chat</Set>
<Set name="User">root</Set>
<Set name="Password">sillyness</Set>
</New>
</Arg>
</New>
<Set name="contextPath">/</Set>
<Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/gcm</Set>
<Set name="extractWAR">true</Set>
</Configure>
Khi tôi bắt đầu Jetty với java -jar start.jar -port=8080
, mọi thứ bắt đầu tốt đẹp cho đến khi tôi cố gắng để đạt cơ sở dữ liệu từ servlet của tôi. Phần xử lý quy tắc ứng yêu cầu trông như thế này:
public static List<String> getDevices()
throws javax.naming.NamingException, java.sql.SQLException {
synchronized (regIds) {
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/myds");
Connection conn = null;
Statement stmt = null;
try {
conn = ds.getConnection();
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from chatdevice");
//blah,blah,blah...
Các lỗi tôi nhận được là:
javax.naming.NameNotFoundException; remaining name 'jdbc/myds'
at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:500)
at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:531)
at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:531)
at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:546)
at org.eclipse.jetty.jndi.java.javaRootURLContext.lookup(javaRootURLContext.java:112)
at javax.naming.InitialContext.lookup(InitialContext.java:409)
at com.google.android.gcm.demo.server.Datastore.getDevices(Datastore.java:98)
Làm thế nào để có được Jetty để tìm mã cơ sở dữ liệu?
Xin chào Sumit, cảm ơn câu trả lời, nhưng nếu tôi đặt nó vào một tệp có tên 'web.xml', hoặc bất cứ nơi nào trong tệp gcm.xml của mình, tôi sẽ nói "Không thể đạt được mục tiêu của nút: đã bắt đầu" và " Loại cấu hình không xác định: resource-ref trong " –
Tôi quên đề cập đến: nếu tôi nhấn servlet của mình tại thời điểm đó, tôi vẫn nhận được cùng lỗi NameNotFoundException. –