Синхронная обработка сообщений JMS . — КиберПедия 

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Синхронная обработка сообщений JMS .

2020-11-03 139
Синхронная обработка сообщений JMS . 0.00 из 5.00 0 оценок
Заказать работу

Reciver синхронный

Properties p = new Properties();

***

Context ctx = new InitialContext(p);

QueueConnectionFactory qcf

=(QueueConnectionFactory) ctx. lookup("java:comp/DefaultJMSConnectionFactory");

QueueConnection con = qcf. createQueueConnection();

QueueSession session = con. createQueueSession(false,Session.AUTO_ACKNOWLEDGE);

Queue queue = null;

queue = (Queue) ctx. lookup("MyQueue");

QueueReceiver receiver = session. createReceiver(queue);

con. start();

for(;;){

TextMessage textMessage = (TextMessage) receiver. receive();

   System.out.println("Got a message:"+ textMessage. getText());

}

Асинхронная обработка сообщений JMS.

Reciver асинхронный

public class AsyncR implements MessageListener {

public AsyncR(){ }

public void onMessage (Message message){

TextMessage textMessage = (TextMessage) message;

System.out.println("Got a message: "+textMessage.getText());

}

public static void main(String[] args) {

***

Context ctx = new InitialContext(p);

QueueConnectionFactory qcf = (QueueConnectionFactory)ctx.lookup("java:comp/DefaultJMSConnectionFactory");

QueueConnection con = qcf. createQueueConnection();

QueueSession session = con. createQueueSession(false,Session.AUTO_ACKNOWLEDGE);

Queue que ue = (Queue) ctx. lookup("MyQueue");

QueueReceiver receiver = session. createReceiver(queue);

con. start();

AsyncR async = new AsyncR();

receiver.setMessageListener(async);

Thread.sleep(100000000); }

Передача экземпляра класса в сообщении.

Передача объекта

Card c = new Card ("Piter",new Date(),"1",0.0);

message.setObject (c);

producer.send (message);

public class Card implements Serializable

public class ObjectListener implements MessageListener {

public ObjectListener (BillingService bs)

{ this.bs = bs; }

public void onMessage (Message message) {

ObjectMessage msg = null;

 if (message instanceof ObjectMessage) {

msg = (ObjectMessage) message;

Object o = msg.getObject ();

System.out.println("Reading message: " + o);

if (o instanceof Card) Card c = (Card)o;

Программирование событий в.NET.

ORM: основные принципы. XML mapping

ORM (o bject- r elational m apping) объектно-реляционное отображение технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования. ORM — прослойка между базой данных и кодом, которая создаёт «виртуальную объектную базу данных».

Необходимо обеспечить работу с данными в терминах классов, а не таблиц данных и преобразовать термины и данные классов в данные, пригодные для хранения в СУБД. Необходимо также обеспечить интерфейс для CRUD-операций над данными. В общем, необходимо избавиться от необходимости писать SQL-код для взаимодействия в СУБДет созданые в программе объекты складывать/получать в/из бд.

Декларативный способ реализации ORM или ORM метаданных позволяет соотнести объекты с одной или несколькими таблицами из базы данных. Для хранения метаданных используются метаданные или дополнительные настроечные файлы (например в формате XML).

Классы сущностей. Annotation mapping.

Сущность (Entity) — простой объект Plain Ordinary Java Object (POJO), который представляет в приложении запись из таблицы реляционной базы данных.

Persistence context — множество управляемых сущностей.

В persistence context сущности и их жизненный цикл управляются специальным классом javax.persistence.EntityManager.

Для создания экземпляра класса EntityManager, управляемого приложением, используется метод createEntityManager() интерфейса javax.persistence.EntityManagerFactory.

Он также может быть получен из persistence context текущей транзакции в многокомпонентном приложении.

Контекст, состояние сущностей

Состояние Entity

transient - экземпляр entity только создан, но не связан с контекстом. Entity не имеет постоянное представительство в базе данных и, как правило не имеет идентификатора.

managed или persistent - entity имеет соответствующий идентификатор и связан с контекстом. Entity может или не может физически существовать в базе данных.

detached – entity имеет связанный идентификатор, но больше не связана с контекстом (обычно, так как контекст был закрыт или экземпляр entity был удалён из контекста)

removed - entity имеет связанный идентификатор и связана с контекстом, однако запланировано её удаление из базы данных.

Классы entityManagerа и сессии имеют методы для изменения и контроля состояния entity.

Класс EntityManager

EntityManager

интерфейс, который описывает API для всех основных операций над Enitity.

Основные операции:

1) Для операций над Entity: persist (добавление Entity под управление JPA), merge (обновление), remove (удаления), refresh (обновление данных), detach (удаление из управления JPA), lock (блокирование Enity от изменений в других потоках).

2) Получение данных: find (поиск и получение Entity), createQuery, createNamedQuery, createNativeQuery, createStoredProcedureQuery.

3) Получение других сущностей JPA: getTransaction, getEntityManagerFactory, getCriteriaBuilder, getMetamodel.

4) Общие операции над EntityManager или всеми Entities: close, isOpen, getProperties, setProperty, clear

@PersistenceContext — аннотация используется для указания EntityManager, который необходимо ввести как зависимость.

Основы Hibernate, HQL.

Hibernate

Структура Hibernate

 

Hibernate Query Language (HQL) объектно-ориентированный язык запросов, схожий с SQL.

Для загрузки объектов из базы данных используется команда FROM.

FROM Uchebnyieplanyi u WHERE u.spetsialnosti.kodSpets = 2

SELECT используется для получения нескольких свойств объектов в результирующем наборе, а не всего объекта.

SELECT author.id FROM Author author

Основные классы Hibernate

Основные классы

Configuration позволяет приложению определять свойства, которые будут использоваться при создании SessionFactory.

SessionFactory Потокобезопасный (функционирует корректно при использовании его из нескольких потоков одновременно), неизменный (не сохраняет какую-либо обратную связь к конфигурацией) кэш откомпилированных мэппингов для одной базы данных. Фабрика для создания объектов класса Session. SessionFactory является клиентом для ConnectionProvider.

Session Однопоточный, короткоживущий объект, являющийся посредником между приложением и хранилищем долгоживущих объектов. Фабрика для объектов класса Transaction и Query. Используется для навигации по объектному графу, поиска объектов по идентификатору, операций над Entity.

Query для осуществления HQL запросов, возвращение результатов.

Transaction — однопоточный, короткоживущий объект, используемый приложением для указания атомарной единицы выполняемой работы. Он абстрагирует приложение от нижележащих JDBC, JTA или CORBA транзакций.

Для открытия нового сеанса обычно создаётся служебный класс HibernateUtil

Реализация ORM в.NET.


Поделиться с друзьями:

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.