Spec-Zone .ru
спецификации, руководства, описания, API

21.3.14.1. Простое Приложение JSP с Glassfish, Connector/J и MySQL

Этот раздел показывает, как развернуть простое приложение JSP на Glassfish, который соединяется с базой данных MySQL.

Этот пример предполагает, что Вы уже установили подходящий Пул Соединения и Ресурс JDBC, как объяснено в предыдущих разделах. Также предполагается, что Вам устанавливали базу данных-образец, такой как world.

Основной код программы, index.jsp представляется здесь:

<%@ page import="java.sql.*, javax.sql.*, java.io.*, javax.naming.*" %><html><head><title>Hello world from JSP</title></head><body><%  InitialContext ctx;  DataSource ds;  Connection conn;  Statement stmt;  ResultSet rs;  try {    ctx = new InitialContext();    ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MySQLDataSource");    //ds = (DataSource) ctx.lookup("jdbc/MySQLDataSource");    conn = ds.getConnection();    stmt = conn.createStatement();    rs = stmt.executeQuery("SELECT * FROM Country");    while(rs.next()) {%>    <h3>Name: <%= rs.getString("Name") %></h3>    <h3>Population: <%= rs.getString("Population") %></h3><%        }  }  catch (SQLException se) {%>    <%= se.getMessage() %><%        }  catch (NamingException ne) {%>      <%= ne.getMessage() %><%  }%></body></html>

Кроме того, два XML-файла требуются: web.xml, и sun-web.xml. Могут быть другие существующие файлы, такие как классы и изображения. Эти файлы организуются в структуру каталогов следующим образом:

index.jspWEB-INF   |   - web.xml   - sun-web.xml

Код для web.xml :

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <display-name>HelloWebApp</display-name>    <distributable/>  <resource-ref>    <res-ref-name>jdbc/MySQLDataSource</res-ref-name>    <res-type>javax.sql.DataSource</res-type>    <res-auth>Container</res-auth>    <res-sharing-scope>Shareable</res-sharing-scope>                  </resource-ref></web-app>

Код для sun-web.xml :

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 Servlet 2.4//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_4-1.dtd"><sun-web-app>  <context-root>HelloWebApp</context-root>  <resource-ref>    <res-ref-name>jdbc/MySQLDataSource</res-ref-name>    <jndi-name>jdbc/MySQLDataSource</jndi-name>    </resource-ref> </sun-web-app>

Эти XML-файлы иллюстрируют очень важный аспект выполнения приложений JDBC на Glassfish. На Glassfish важно отобразить строку, определенную для ресурса JDBC к его имени JNDI, как установлено в консоли администрирования Glassfish. В этом примере имя JNDI для ресурса JDBC, как определено в Консоли администрирования Glassfish, создавая Ресурс JDBC, было jdbc/MySQLDataSource. Это должно быть отображено на имя, данное в приложении. В этом примере имя, определенное в приложении, jdbc/MySQLDataSource, и имя JNDI, окажись, быть тем же самым, но это должно не обязательно иметь место. Отметьте, что элемент XML <res касательно имени> используется, чтобы определить имя как использующийся в исходном коде приложения, и это отображается на имя JNDI, определенное, используя <jndi-имя> элемент в файле sun-web.xml. Ресурс также должен быть создан в web.xml файл, хотя отображение ресурса к имени JNDI имеет место в sun-web.xml файл.

Если у Вас не будет этого отображения установленным правильно в XML-файлах, то Вы не будете в состоянии к поиску источник данных, используя строку поиска JNDI, такую как:

ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MySQLDataSource");

Вы все еще будете в состоянии получить доступ к источнику данных, непосредственно используя:

ds = (DataSource) ctx.lookup("jdbc/MySQLDataSource");

С исходными файлами на месте, в корректной структуре каталогов, Вы готовы развернуть приложение:

  1. В дереве навигации переместитесь к Приложениям - фрейм Приложений будет выведен на экран. Щелкните по Deploy.

  2. Можно теперь развернуть приложение, упакованное в единственный ВОЕННЫЙ файл от удаленного клиента, или можно выбрать упакованный файл или каталог, который локально доступен для сервера. Если Вы просто тестируете приложение локально, можно просто указать на Glassfish на каталог, который содержит Ваше приложение, не будучи должен упаковать приложение в ВОЕННЫЙ файл.

  3. Теперь выберите тип приложения из Типа выпадающее поле списка, которое в этом примере является Web application.

  4. Нажать OK.

Теперь, когда Вы перемещаетесь к фрейму Приложений, у Вас будет опция, чтобы Запустить, Повторно развернуть, или Перезапустить Ваше приложение. Можно протестировать свое приложение, щелкая по Launch. Приложение будет соединение с базой данных MySQL и выводить на экран Имя и Совокупность стран в Country таблица.