1616
1717import java .io .IOException ;
1818import java .sql .Connection ;
19- import java .sql .DriverManager ;
2019import java .sql .PreparedStatement ;
2120import java .sql .ResultSet ;
2221import java .sql .SQLException ;
2827import java .util .stream .Stream ;
2928import java .util .stream .StreamSupport ;
3029
30+ import javax .naming .Context ;
31+ import javax .naming .InitialContext ;
32+ import javax .naming .NamingException ;
3133import javax .servlet .ServletException ;
3234import javax .servlet .annotation .WebServlet ;
35+ import javax .sql .DataSource ;
3336
3437import org .httprpc .WebService ;
3538import org .httprpc .io .CSVEncoder ;
4851public class PetService extends WebService {
4952 private static final long serialVersionUID = 0 ;
5053
54+ private DataSource dataSource = null ;
55+
5156 /**
5257 * Pet interface.
5358 */
@@ -59,15 +64,16 @@ public interface Pet {
5964 public Date getBirth ();
6065 }
6166
62- private static final String DB_URL = "jdbc:mysql://vm.local:3306/menagerie?user=root&password=password&serverTimezone=UTC&useSSL=false" ;
63-
6467 @ Override
6568 public void init () throws ServletException {
6669 super .init ();
6770
6871 try {
69- Class .forName ("com.mysql.cj.jdbc.Driver" );
70- } catch (ClassNotFoundException exception ) {
72+ Context initialCtx = new InitialContext ();
73+ Context environmentContext = (Context ) initialCtx .lookup ("java:comp/env" );
74+
75+ dataSource = (DataSource ) environmentContext .lookup ("jdbc/MenagerieDB" );
76+ } catch (NamingException exception ) {
7177 throw new ServletException (exception );
7278 }
7379 }
@@ -87,7 +93,7 @@ public void getPets(String owner, String format) throws SQLException, IOExceptio
8793
8894 arguments .put ("owner" , owner );
8995
90- try (Connection connection = DriverManager .getConnection (DB_URL );
96+ try (Connection connection = dataSource .getConnection ();
9197 PreparedStatement statement = connection .prepareStatement (parameters .getSQL ())) {
9298 parameters .apply (statement , arguments );
9399
@@ -123,7 +129,7 @@ public void getPets(String owner, String format) throws SQLException, IOExceptio
123129 @ ResourcePath ("average-age" )
124130 public double getAverageAge () throws SQLException {
125131 double averageAge ;
126- try (Connection connection = DriverManager .getConnection (DB_URL );
132+ try (Connection connection = dataSource .getConnection ();
127133 Statement statement = connection .createStatement ();
128134 ResultSet resultSet = statement .executeQuery ("SELECT birth FROM pet" )) {
129135 ResultSetAdapter resultSetAdapter = new ResultSetAdapter (resultSet );
0 commit comments