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

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

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

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

2020-11-03 135
Синхронная обработка сообщений 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.014 с.