- •Отчет по лабораторной работе «Система учета прохода в здание»
- •Инструкция для администратора:
- •Запуск административной web-консоли GlassFish
- •Регистрация источника данных в jndi
- •Books.Java
- •LibrarySession.Java
- •Add_authors.Jsp
- •Add_books.Jsp
- •Index.Jsp
- •Return_b.Jsp
- •All_books.Jsp
- •Return_book.Jsp
- •Search_b.Jsp
- •Search_books.Jsp
- •Take_b.Jsp
- •Take_book.Jsp
- •Тестирование
- •Выводы:
Запуск административной web-консоли GlassFish
Перед запуском административной консоли необходимо убедиться, что запущены
серверы GlassFish и JavaDB. В отсутствие NetBeans запуск серверов можно существить с помощью утилиты asadmin. Например, при стандартной установке в Windows эта утилита может иметь следующий полный путь: C:\Program Files\glassfish-v2.1\bin\asadmin.bat.
Команда запуска домена (по умолчанию создается домен domain1):
asadmin start-domain domain1
Команда запуска сервера JavaDB:
asadmin start-database --dbhost 127.0.0.113
После запуска GlassFish web-консоль администрирования доступна по HTTP, при этом стандартным TCP-портом является 4848 (однако, при установке сервера может быть выбран и другой порт). Таким образом, при стандартной установке сервера на локальном компьютере открыть web-консоль можно с помощью браузера по url http://localhost:4848/ .
Регистрация источника данных в jndi
В случае, если приложение использует БД, при переносе на другой компьютер
необходимо зарегистрировать соответствующий источник данных (Data Source) в JNDI. При использовании NetBeans эта операция осуществляется автоматически при создании Persistence Unit. Без NetBeans администрирование JNDI может быть выполнено с помощью web-консоли. Соответствующие записи находятся во вкладке Resources → JDBC.
В первую очередь необходимо создать пул соединений с БД (Connection Pool). В
соответствующем разделе выбираем New, далее вводим уникальное имя пула, Resource Type: javax.sql.DataSource, DataBase Vendor: JavaDB. В следующем окне необходимо в разделе Additional Properties ввести название БД (accessinbuilding), имя сервера БД и порт (по умолчанию — localhost:1527), пользователя User (по умолчанию — APP, в нашем случае accessinbuilding) и пароль Password (accessinbuilding). Для того, чтобы при развертывании приложения автоматически создалась необходимая БД, следует добавить в свойства пула атрибут connectionAttributes со значением ;create=true.
После создания пула соединений необходимо создать источник данных во вкладке
JDBC Resources → New. Назначаем имя источника данных (JNDI Name), совпадающее с тем, которое использовалось при разработке приложения. Указываем созданный ранее пул соединений (Pool Name).
Развертывание приложения с помощью web-консоли
Выбрать вкладку Applications → Enterprise Applications, затем Deploy. Далее
необходимо указать EAR-файл приложения, отметить галочку Java Web Start.
Запуск корпоративного web-приложения EJB
Поскольку приложение с web-интерфейсом работает в стандартном тонком клиенте
(браузере), то для его функционирования нет необходимости устанавливать
дополнительное программное обеспечение. После развертывания приложения на сервере, ему назначается URL (например, http://localhost:8080/AddressBook- war).
Исходный код
library-ejb – модуль EJB:
Author.java
package library;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
@Entity
@Table(name = "AUTHOR")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Author.findAll", query = "SELECT a FROM Author a"),
@NamedQuery(name = "Author.findById", query = "SELECT a FROM Author a WHERE a.id = :id"),
@NamedQuery(name = "Author.findByName", query = "SELECT a FROM Author a WHERE a.name = :name")})
public class Author implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@GeneratedValue
@Column(name = "ID")
private Integer id;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 120)
@Column(name = "NAME")
private String name;
public Author() {
}
public Author(Integer id) {
this.id = id;
}
public Author(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
if (!(object instanceof Author)) {
return false;
}
Author other = (Author) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "library.Author[ id=" + id + " ]";
}
}
