-
Сервер.
database содержит .txt файл с командами для создания базы данных.
Класс HandbookService описывает поведение при CRUD операциях (Sql команды через prepared statements).
Класс Database описывает подключение БД с помощью Tomcat. Нужно в Tomcat/conf/server.xml внести настройки БД, а также добавить SQL драйвер в Tomcat/libs.
В models классы описывают структуры, которые используются в БД.
-
Клиент.
Для работы с приложением нужна библиотека javafx, поэтому я ее закинула в папку lib.
Controller выводит окно подключения к серверу (showConnectionDialog), а также выполняет инициализацию БД (вывод окна с таблицей) и т.д.
EditingCell - редактирование отдельных ячеек (прямо в таблице).
InsertDialog - окно добавления данных в БД.
ProtocolPerformer - интерфейс для реализации подключения(в зависимости от типа).
SoapProtocolPerformer - реализует вышеописанный интерфейс и реализует SOAP соединение (передает команды серверу и тд).
В axis2 package есть классы CallbackHandler и Stub, которые сгенерированы из wsdl файла, который находится на сервере axis2. CallbackHandler используется в Stub. А в stub происходит общение клиента и сервера(отправление сообщений, получение данных и т.д).
Для каждой программы есть build.xml, который с помощью Ant выполняет некоторую функциональность (генерация wsdl файла, генерация классов из wsdl, генерация .aar сервиса и т.д).
Данные для БД были взяты отсюда.
Изначально пишется сервер, в котором есть необходимые классы (для хранения элементов БД,для описания CRUD операций и тд). Также создается build.xml, с помощью которого можно сгенерировать .aar веб-сервис.
Запуск сервера происходит через Apache Tomcat. Нужно .aar сервис переместить в папку Tomcat/webapps/axis2/WEB-INF/services, а потом запустить Tomcat/bin/startup.bat. Для всего этого нужно установить Axis2 war или exploded.
Для работы с клиентом нужно с помощью build.xml сгенерировать необходимые CallbackHandler и Stub классы. Достается wsdl файл с сервера и генерируется код.
Далее запускается клиент, в окно вводится адрес, к которому нужно подключиться, и в методе connect класса SoapProtocolPerformer проверяется правильность написанного адреса и создается клиент через класс HandbookServiceStub.
Далее уже через интерфейс клиента выполняем CRUD операции над БД.
В окне ввода порта по дефолту задан нужный, поэтому нужно просто нажать ОК.
При подключении клиента к серверу появится окно, в котором при правильном подключении должна быть заполненная данными таблица.
-
Добавление данных: ctrl + A или Table -> Add.
-
Удаление данных: нажать на необходимую строку и нажать Delete ИЛИ Table -> Remove ИЛИ ctrl + R. Для отображения изменений ctrl + S или Table -> Synchronize.
-
Редактирование данных.
Первый способ. Можно дважды кликнуть на нужную ячейку, изменить ее и нажать Enter. Тогда будут внесены изменения ТОЛЬКО этой ячейки в БД.
Второй способ. Можно дважды кликнуть на нужную ячейку, изменить ее и нажать F1. Изменение будет зафиксировано, но не будет занесено в БД. Так можно отредактировать остальные необходимые ячейки и дальше нажать ctrl + U ИЛИ Table -> Update.
Для отображения изменений ctrl + S или Table -> Synchronize.
-
Для отмены изменения ячейки после двойного клика по ней нужно нажать Esc.
P.S. Не знаю почему так, но клиент бывает на каких-то действиях зависает, и для дальнейшей работы нужно перезапустить сервер tomcat.
Изначально нужно добавить драйвер mysql в Tomcat/libs. Далее нужно в Tomcat/conf/server.xml внутри GlobalNamingResources добавить конфиг БД.
<Resource name="jdbc/j2eehandbook" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/j2eehandbook?useSSL=false" username= "username" password="password" maxIdle="20" minIdle="5" />
-
Для сервера:
Нужно запустить build.xml и из папки build переместить .aar файл в папку Tomcat/webapps/axis2/WEB-INF/services. Для этого нужно установить Axis2 war(нужно будет запустить один раз сервер для деплоя) или exploded. Далее запустить tomcat сервер.
-
Для клиента:
Для клиента нужно добавить в modules библиотеку javafx, которая находится в папке lib, а в параметры запуска в VM Options нужно добавить
--module-path "lib\javafx-sdk-11.0.2\lib" --add-modules=javafx.controls,javafx.fxml