Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Попытка работы с JMS 
V
    Опции темы
javastic
Дата 12.9.2012, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: нет
Всего: 27



/
Код

*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jmsclient;

import java.io.IOException;
import java.io.InputStreamReader;
import javax.annotation.Resource;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;


public class JMSClient {

    @Resource(mappedName = "jms/ConnectionFactory")
    private static ConnectionFactory connectionFactory;
    @Resource(mappedName = "jms/Queue")
    private static Queue queue;

    public static void main(String[] args) {
        Connection connection = null;

        Destination destination = (Destination) queue;

        try {
            connection = connectionFactory.createConnection();
            
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            
            MessageProducer producer = session.createProducer(destination);
            
            TextMessage message = session.createTextMessage();
            
            InputStreamReader inputStreamReader = new InputStreamReader(System.in);
            
            char c = 'n';
            int i = 0;
            
            while (!((c == 'q') || (c == 'Q'))) {
                try {
                    c = (char)inputStreamReader.read();
                    message.setText("This is message: "+(i+1));
                    System.out.println("Sending message: " + message.getText());
                    producer.send(message);    
                    i++;
                } catch (IOException e) {
                    System.err.println("I/O exception: " + e.toString());
                }
            }
            
        } catch (JMSException e) {
            System.err.println("Exception occurred: " + e.toString());
        } finally {
            if (connection != null) {
                try {
                    connection.close();
                } catch (JMSException e) {
                }
            }
        }
    }
}



Вываливается с ошибкой: 
Код

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/jms/JMSException
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
    at java.lang.Class.getMethod0(Class.java:2685)
    at java.lang.Class.getMethod(Class.java:1620)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:492)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:484)
Exception in thread "main" Java Result: 1


Весь инет изрыл, ну никаких решений толковых нет. Кто сталкивался?

Netbeans 7.2, Java 1.7, Glassfish 3.1.2  JMS Factory прописан нормально.



--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 12.9.2012, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Привет.Давно не виделись smile
Посмотри вот эти две темки - там похоже то, что ищешь

http://stackoverflow.com/questions/6335024...activemq-broker
Здесь похоже важно вот это: moved the javaee dependency to the end of the class path.

http://stackoverflow.com/questions/8218629...ample-exception
PM MAIL WWW ICQ   Вверх
javastic
Дата 13.9.2012, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: нет
Всего: 27



Приветствую! Давно правда не виделись! smile

Спасибо! Это и множество других примеров видел. Не помогло. Очень я опечален, то, что приходится с бубном прыгать как в случае с мелкософтом. В общем полный Absent. :-(



--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
jk1
Дата 14.9.2012, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Похоже на Jar Hell. 
Я так понимаю, что у Glassfish реализация JMS на борту есть. Приложение не подтягивает случаем еще и свою? Например activemq-all.jar


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
javastic
Дата 14.9.2012, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: нет
Всего: 27



Нет не подтягивает.
Скачал отдельно библиотеку javax.jms.1.1.jar подключил, теперь ошибка такая: 

Код

Exception in thread "main" java.lang.NullPointerException
    at jmsclient.JMSClient.main(JMSClient.java:33)
Java Result: 1


рубится на этой строке:
Код

connection = connectionFactory.createConnection();


Если делать web application куда прописываются библиотеки от Гласфиша, то всё Ок. Работает.

Это сообщение отредактировал(а) javastic - 14.9.2012, 16:07


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
javastic
Дата 17.9.2012, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: нет
Всего: 27



Разобрался. Короче:

1. проект в NetBeans надо создавать как EE (тогда автоматом цепляются библиотеки сервера приложений в данном случае у меня Glassfish)
user posted image
2. надо создать ресурс для подключения к Glassfish где указать какое соединение будет (для класса connectionFactory)
Код

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
  <connector-resource enabled="true" jndi-name="jms/myQueue" object-type="user" pool-name="jms/myQueue">
    <description/>
  </connector-resource>
  <connector-connection-pool associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-definition-name="javax.jms.ConnectionFactory" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="true" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="jms/myQueue" ping="false" pool-resize-quantity="2" pooling="true" resource-adapter-name="jmsra" steady-pool-size="8" validate-atmost-once-period-in-seconds="0"/>
</resources>

3. далее запускаем код приведенный выше и наслаждаемся.

Вы спросите зачем это все надо было? Отвечу, хотелось выполнить задачу благодаря которой в консоле крутится приложение и формирует некий лог который транслируется в очередь. Далее через веб приложение можно было бы этот лог читать как список и управлять консолным приложением по типу "Стоп", "Старт" и т.д.

Это сообщение отредактировал(а) javastic - 17.9.2012, 16:53


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.