powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отправить сообщение JMS из EJBSession компонента?
19 сообщений из 19, страница 1 из 1
Как отправить сообщение JMS из EJBSession компонента?
    #37995349
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть пример с таймеров для EJB "timersession". В него добавляю код по отправке сообщения в очередь JMS, но получаю Exception: java.lang.NullPointerException при создании connection = connectionFactory.createConnection(). В AppServ фабрика и очередь созданы. При запуске отдельно отправки сообщения через AppClient.bat работает. Возможно при работе из EJB нужно указать путь к JNDI?

Подскажите, в чём может быть проблема?

AppServ: Glassfish 3+

Класс таймера:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
package timersession.ejb;

import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerService;

/**
 * TimerBean is a singleton session bean that creates a timer and prints out a
 * message when a timeout occurs.
 */
@Singleton
@Startup
public class TimerSessionBean {
    private static final Logger logger = Logger.getLogger(
                "com.sun.tutorial.javaee.ejb.timersession.TimerSessionBean");
    @Resource
    TimerService timerService;
    private Date lastAutomaticTimeout;
    private Date lastProgrammaticTimeout;

    public void setTimer(long intervalDuration) {
        logger.log(
                Level.INFO,
                "Setting a programmatic timeout for {0} milliseconds from now.",
                intervalDuration);

        Timer timer = timerService.createTimer(
                    intervalDuration,
                    "Created new programmatic timer");
    }

    @Timeout
    public void programmaticTimeout(Timer timer) {
        this.setLastProgrammaticTimeout(new Date());
        logger.info("Programmatic timeout occurred.");
    }

    @Schedule(second = "*/10", minute = "*", hour = "*")
    public void automaticTimeout() {
        LogFile log = new LogFile("c:\\temp\\tst.log", /*append*/true, /*flush*/true, /*prefix*/true);        
        Producer p = new Producer();
        this.setLastAutomaticTimeout(new Date());
        log.writeLogString("tick");
        p.go();
        p.log.free();
        logger.info("Automatic timeout occurred");
        log.free();
        
    }

    /**
     * @return the lastTimeout
     */
    public String getLastProgrammaticTimeout() {
        if (lastProgrammaticTimeout != null) {
            return lastProgrammaticTimeout.toString();
        } else {
            return "never";
        }
    }

    /**
     * @param lastTimeout the lastTimeout to set
     */
    public void setLastProgrammaticTimeout(Date lastTimeout) {
        this.lastProgrammaticTimeout = lastTimeout;
    }

    /**
     * @return the lastAutomaticTimeout
     */
    public String getLastAutomaticTimeout() {
        if (lastAutomaticTimeout != null) {
            return lastAutomaticTimeout.toString();
        } else {
            return "never";
        }
    }

    /**
     * @param lastAutomaticTimeout the lastAutomaticTimeout to set
     */
    public void setLastAutomaticTimeout(Date lastAutomaticTimeout) {
        this.lastAutomaticTimeout = lastAutomaticTimeout;
    }
}



Класс отправки сообщения:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
package timersession.ejb;
import javax.annotation.Resource;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
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;
import javax.jms.Topic;

public class Producer {
    @Resource(lookup = "jms/ConnectionFactory")
    //@Resource(mappedName = "jms/ConnectionFactory")     
    private static ConnectionFactory connectionFactory;
    //@Resource(mappedName = "jms/Queue")     
    @Resource(lookup = "jms/Queue")
    private static Queue queue;
    @Resource(lookup = "jms/Topic")
    private static Topic topic;

    LogFile log = new LogFile("c:\\temp\\tst.log", /*append*/true, /*flush*/true, /*prefix*/true);       

    public void go() {
        final int NUM_MSGS;
        Connection connection = null;

        String destType = "queue";
        log.writeLogString("0Destination type is " + destType);

        NUM_MSGS = 1;

        Destination dest = null;

        try {
            if (destType.equals("queue")) {
                dest = (Destination) queue;
            } else {
                dest = (Destination) topic;
            }
        } catch (Exception e) {
            log.writeLogString("Error setting destination: " + e.toString());
            //e.printStackTrace();
            //System.exit(1);
            return;
        }
        log.writeLogString("1");

        try {
            connection = connectionFactory.createConnection();
            log.writeLogString("2");
            Session session = connection.createSession(
                        false,
                        Session.AUTO_ACKNOWLEDGE);
            log.writeLogString("3");
            MessageProducer producer = session.createProducer(dest);
            TextMessage message = session.createTextMessage();
            log.writeLogString("4");
            for (int i = 0; i < NUM_MSGS; i++) {
                log.writeLogString("5");                
                message.setText(
                        "This is message " + (i + 1) + " from producer");
                log.writeLogString("Sending message: " + message.getText());
                producer.send(message);
            }
            log.writeLogString("6");
            producer.send(session.createMessage());
            log.writeLogString("7");
        } catch (Exception e) {
            log.writeLogString("Exception occurred: " + e.toString());
        } finally {
            if (connection != null) {
            log.writeLogString("8");                
                try {
                    connection.close();
                } catch (JMSException e) {
                     log.writeLogString(e.getMessage());
                }
            }
        }
    }
}
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995365
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pulp,
Код: java
1.
2.
public class Producer {
    @Resource(lookup = "jms/ConnectionFactory")

а потом
Код: java
1.
Producer p = new Producer();



Проблема в том что некому делать Injection в произвольный класс. Используй JNDI lookup
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995373
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vas0,
не понял.

Ведь в так и сделано, в начале класса Producer есть
@Resource(lookup = "jms/ConnectionFactory")

А в методе таймера automaticTimeout() создание экземпляра:
Producer p = new Producer();

Или создать экземляр Producer в самом классе? Уточни пож.
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995397
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, pulp!
> Ведь в так и сделано, в начале класса Producer есть
> @Resource(lookup = "jms/ConnectionFactory")

Только кто её читать будет, эту аннотацию? Она работает, только если
класс описан как @Stateless (ну или ещё как) и он не создаётся в Вашем
коде. Т.е. в TimerSessionBean будет @EJB Producer producer;

> А в методе таймера automaticTimeout() создание экземпляра:
> Producer p = new Producer();

А вот так делать нельзя :)

--
Алексей
JID: alxt@ya.ru


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995592
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если оба класса в рамках одного сервиса - всё равно так нужно делать?
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995615
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, pulp!
> А если оба класса в рамках одного сервиса

Это о чём вообще? Что значит один сервис?

Ещё раз- если ты вызвал конструктор сам, то аннотации не работают.
Вообще (ну если не самому их разбирать).

--
Алексей
JID: alxt@ya.ru


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995647
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как-то не взлетает ((
А интерфейс в этом случае нужно объявлять для метода go() класса Producer?
Код: java
1.
2.
3.
4.
@Local
public interface ProducerLocal {
     public void go();
} 
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995668
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, pulp!

> Как-то не взлетает ((

Код какой?

> А интерфейс в этом случае нужно объявлять для метода go() класса Producer?

А, да, забыл- интерфейс нужен. Инъектить бин напрямую никак нельзя :)

--
Алексей
JID: alxt@ya.ru


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995718
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
package timersession.ejb;

import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerService;
import javax.ejb.EJB;

/**
 * TimerBean is a singleton session bean that creates a timer and prints out a
 * message when a timeout occurs.
 */
@Singleton
@Startup
public class TimerSessionBean {
    private static final Logger logger = Logger.getLogger(
                "com.sun.tutorial.javaee.ejb.timersession.TimerSessionBean");
    @Resource
    TimerService timerService;
    private Date lastAutomaticTimeout;
    private Date lastProgrammaticTimeout;
    @EJB
    ProducerBean producer;
    
    public void setTimer(long intervalDuration) {
        logger.log(
                Level.INFO,
                "Setting a programmatic timeout for {0} milliseconds from now.",
                intervalDuration);

        Timer timer = timerService.createTimer(
                    intervalDuration,
                    "Created new programmatic timer");
    }

    @Timeout
    public void programmaticTimeout(Timer timer) {
        this.setLastProgrammaticTimeout(new Date());
        logger.info("Programmatic timeout occurred.");
    }

    @Schedule(second = "*/10", minute = "*", hour = "*")
    public void automaticTimeout() {
        LogFile log = new LogFile("c:\\temp\\tst.log", /*append*/true, /*flush*/true, /*prefix*/true);        
        this.setLastAutomaticTimeout(new Date());
        log.writeLogString("tick");
        producer.tst();
        logger.info("Automatic timeout occurred");
        log.free();
        
    }

    /**
     * @return the lastTimeout
     */
    public String getLastProgrammaticTimeout() {
        if (lastProgrammaticTimeout != null) {
            return lastProgrammaticTimeout.toString();
        } else {
            return "never";
        }
    }

    /**
     * @param lastTimeout the lastTimeout to set
     */
    public void setLastProgrammaticTimeout(Date lastTimeout) {
        this.lastProgrammaticTimeout = lastTimeout;
    }

    /**
     * @return the lastAutomaticTimeout
     */
    public String getLastAutomaticTimeout() {
        if (lastAutomaticTimeout != null) {
            return lastAutomaticTimeout.toString();
        } else {
            return "never";
        }
    }

    /**
     * @param lastAutomaticTimeout the lastAutomaticTimeout to set
     */
    public void setLastAutomaticTimeout(Date lastAutomaticTimeout) {
        this.lastAutomaticTimeout = lastAutomaticTimeout;
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package timersession.ejb;
import javax.ejb.Local;

@Local
public interface ProducerLocal {
    public void tst();
    public void go();
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
package timersession.ejb;

import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerService;
import javax.ejb.EJB;

/**
 * TimerBean is a singleton session bean that creates a timer and prints out a
 * message when a timeout occurs.
 */
@Singleton
@Startup
public class TimerSessionBean {
    private static final Logger logger = Logger.getLogger(
                "com.sun.tutorial.javaee.ejb.timersession.TimerSessionBean");
    @Resource
    TimerService timerService;
    private Date lastAutomaticTimeout;
    private Date lastProgrammaticTimeout;
    @EJB
    ProducerBean producer;
    
    public void setTimer(long intervalDuration) {
        logger.log(
                Level.INFO,
                "Setting a programmatic timeout for {0} milliseconds from now.",
                intervalDuration);

        Timer timer = timerService.createTimer(
                    intervalDuration,
                    "Created new programmatic timer");
    }

    @Timeout
    public void programmaticTimeout(Timer timer) {
        this.setLastProgrammaticTimeout(new Date());
        logger.info("Programmatic timeout occurred.");
    }

    @Schedule(second = "*/10", minute = "*", hour = "*")
    public void automaticTimeout() {
        LogFile log = new LogFile("c:\\temp\\tst.log", /*append*/true, /*flush*/true, /*prefix*/true);        
        this.setLastAutomaticTimeout(new Date());
        log.writeLogString("tick");
        producer.tst();
        logger.info("Automatic timeout occurred");
        log.free();
        
    }

    /**
     * @return the lastTimeout
     */
    public String getLastProgrammaticTimeout() {
        if (lastProgrammaticTimeout != null) {
            return lastProgrammaticTimeout.toString();
        } else {
            return "never";
        }
    }

    /**
     * @param lastTimeout the lastTimeout to set
     */
    public void setLastProgrammaticTimeout(Date lastTimeout) {
        this.lastProgrammaticTimeout = lastTimeout;
    }

    /**
     * @return the lastAutomaticTimeout
     */
    public String getLastAutomaticTimeout() {
        if (lastAutomaticTimeout != null) {
            return lastAutomaticTimeout.toString();
        } else {
            return "never";
        }
    }

    /**
     * @param lastAutomaticTimeout the lastAutomaticTimeout to set
     */
    public void setLastAutomaticTimeout(Date lastAutomaticTimeout) {
        this.lastAutomaticTimeout = lastAutomaticTimeout;
    }
}



Выдает ошибку в лог сервера:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
[#|2012-10-12T14:34:53.663+0400|SEVERE|glassfish3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=35;_ThreadName=Thread-2;|Exception while loading the app|#]

[#|2012-10-12T14:34:53.663+0400|INFO|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=35;_ThreadName=Thread-2;|[1] timers deleted for id: 88476047787819008|#]

[#|2012-10-12T14:34:53.741+0400|SEVERE|glassfish3.1.2|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=35;_ThreadName=Thread-2;|Exception while loading the app : javax.ejb.CreateException: Initialization failed for Singleton TimerSessionBean
javax.ejb.CreateException: Initialization failed for Singleton TimerSessionBean
	at com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:547)
	at com.sun.ejb.containers.AbstractSingletonContainer.access$100(AbstractSingletonContainer.java:79)
	at com.sun.ejb.containers.AbstractSingletonContainer$SingletonContextFactory.create(AbstractSingletonContainer.java:719)
	at com.sun.ejb.containers.AbstractSingletonContainer.instantiateSingletonInstance(AbstractSingletonContainer.java:451)
	at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:216)
	at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:177)
	at org.glassfish.ejb.startup.SingletonLifeCycleManager.doStartup(SingletonLifeCycleManager.java:155)
	at org.glassfish.ejb.startup.EjbApplication.start(EjbApplication.java:177)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:301)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
	at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
	at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
	at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:722)
Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=timersession.ejb.TimerSessionBean/producer,Remote 3.x interface =timersession.ejb.ProducerBean,ejb-link=null,lookup=,mappedName=,jndi-name=timersession.ejb.ProducerBean,refType=Session into class timersession.ejb.TimerSessionBean: Lookup failed for 'java:comp/env/timersession.ejb.TimerSessionBean/producer' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:703)
	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:470)
	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:171)
	at com.sun.ejb.containers.BaseContainer.injectEjbInstance(BaseContainer.java:1694)
	at com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:506)
	... 39 more
Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/timersession.ejb.TimerSessionBean/producer' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=timersession.ejb.TimerSessionBean/producer,Remote 3.x interface =timersession.ejb.ProducerBean,ejb-link=null,lookup=,mappedName=,jndi-name=timersession.ejb.ProducerBean,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'timersession.ejb.ProducerBean#timersession.ejb.ProducerBean' [Root exception is javax.naming.NamingException: Lookup failed for 'timersession.ejb.ProducerBean#timersession.ejb.ProducerBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: timersession.ejb.ProducerBean#timersession.ejb.ProducerBean not found]]]
	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
	at javax.naming.InitialContext.lookup(InitialContext.java:411)
	at javax.naming.InitialContext.lookup(InitialContext.java:411)
	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:599)
	... 43 more
Caused by: javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=timersession.ejb.TimerSessionBean/producer,Remote 3.x interface =timersession.ejb.ProducerBean,ejb-link=null,lookup=,mappedName=,jndi-name=timersession.ejb.ProducerBean,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'timersession.ejb.ProducerBean#timersession.ejb.ProducerBean' [Root exception is javax.naming.NamingException: Lookup failed for 'timersession.ejb.ProducerBean#timersession.ejb.ProducerBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: timersession.ejb.ProducerBean#timersession.ejb.ProducerBean not found]]
	at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:191)
	at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl$EjbReferenceProxy.create(ComponentEnvManagerImpl.java:1109)
	at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:776)
	at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:744)
	at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:169)
	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:498)
	... 47 more
Caused by: javax.naming.NamingException: Lookup failed for 'timersession.ejb.ProducerBean#timersession.ejb.ProducerBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: timersession.ejb.ProducerBean#timersession.ejb.ProducerBean not found]
	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
	at javax.naming.InitialContext.lookup(InitialContext.java:411)
	at javax.naming.InitialContext.lookup(InitialContext.java:411)
	at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:186)
	... 52 more
Caused by: javax.naming.NameNotFoundException: timersession.ejb.ProducerBean#timersession.ejb.ProducerBean not found
	at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:248)
	at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:215)
	at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)
	at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:119)
	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:505)
	... 56 more
|#]
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995732
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, pulp!
> @EJB
> ProducerBean producer;

Я ж уже сказал, что ошибся- надо писать
@EJB
ProducerLocal producer;
Ну и вместо описания ProducerBean приведено дважды TimerSessionBean
зачем-то. На всякий случай- над
Код: sql
1.
2.
@Stateless // других аннотация не надо
class ProducerBean implements ProducerLocal { ... }




--
Алексей
JID: alxt@ya.ru


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995769
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заменил на
Код: java
1.
2.
@EJB
ProducerLocal producer;


и продеплоилось без ошибки.
Но поведение не соответствует. Пока даже без JMS, вызываю метод tst() "вывод в лог", но вывода нет.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
package timersession.ejb;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Singleton;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
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;
import javax.jms.Topic;
import javax.ejb.Stateless;

@Stateless
public class ProducerBean implements ProducerLocal {
    @Resource(lookup = "jms/ConnectionFactory")
    //@Resource(mappedName = "jms/ConnectionFactory")     
    private static ConnectionFactory connectionFactory;
    //@Resource(mappedName = "jms/Queue")     
    @Resource(lookup = "jms/Queue")
    private static Queue queue;
    @Resource(lookup = "jms/Topic")
    private static Topic topic;
    
    LogFile log = new LogFile("c:\\temp\\tst3.log", /*append*/true, /*flush*/true, /*prefix*/true);       
    
    public void tst() {
        log.writeLogString("aaa");        
    }
    
    public void go() {
        final int NUM_MSGS;
        Connection connection = null;

        String destType = "queue";
        log.writeLogString("0Destination type is " + destType);

        NUM_MSGS = 1;

        Destination dest = null;

        try {
            if (destType.equals("queue")) {
                dest = (Destination) queue;
            } else {
                dest = (Destination) topic;
            }
        } catch (Exception e) {
            log.writeLogString("Error setting destination: " + e.toString());
            //e.printStackTrace();
            //System.exit(1);
            return;
        }
        log.writeLogString("1");
/*
        try {
            connection = connectionFactory.createConnection();
            log.writeLogString("2");
            Session session = connection.createSession(
                        false,
                        Session.AUTO_ACKNOWLEDGE);
            log.writeLogString("3");
            MessageProducer producer = session.createProducer(dest);
            TextMessage message = session.createTextMessage();
            log.writeLogString("4");
            for (int i = 0; i < NUM_MSGS; i++) {
                log.writeLogString("5");                
                message.setText(
                        "This is message " + (i + 1) + " from producer");
                log.writeLogString("Sending message: " + message.getText());
                producer.send(message);
            }
            log.writeLogString("6");
            producer.send(session.createMessage());
            log.writeLogString("7");
        } catch (Exception e) {
            log.writeLogString("Exception occurred: " + e.toString());
        } finally {
            if (connection != null) {
            log.writeLogString("8");                
                try {
                    connection.close();
                } catch (JMSException e) {
                     log.writeLogString(e.getMessage());
                }
            }
        }*/
    }
}
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995799
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При вызове producer.tst() ошибка:
javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37995841
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, pulp!

> При вызове producer.tst() ошибка:
> javax.ejb.EJBException: javax.ejb.CreateException: Could not create
> stateless EJB

Как вызываешь-то?

--
Алексей
JID: alxt@ya.ru


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37996008
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В TimerSessionBean срабатывает таймер automaticTimeout.
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37996036
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, pulp!

> В TimerSessionBean срабатывает таймер automaticTimeout.

Код пиши, код! И стэктрейс ошибки с привязкой номеров строк к коду.

--
Алексей
JID: alxt@ya.ru


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37996052
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
package timersession.ejb;

import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerService;
import javax.ejb.EJB;

@Singleton
@Startup
public class TimerSessionBean {
    private static final Logger logger = Logger.getLogger(
                "com.sun.tutorial.javaee.ejb.timersession.TimerSessionBean");
    @Resource
    TimerService timerService;
    private Date lastAutomaticTimeout;
    private Date lastProgrammaticTimeout;
    @EJB
    ProducerLocal producer;
    
    public void setTimer(long intervalDuration) {
        logger.log(
                Level.INFO,
                "Setting a programmatic timeout for {0} milliseconds from now.",
                intervalDuration);

        Timer timer = timerService.createTimer(
                    intervalDuration,
                    "Created new programmatic timer");
    }

    @Timeout
    public void programmaticTimeout(Timer timer) {
        this.setLastProgrammaticTimeout(new Date());
        logger.info("Programmatic timeout occurred.");
    }

    @Schedule(second = "*/10", minute = "*", hour = "*")
    public void automaticTimeout() {
        LogFile log = new LogFile("c:\\temp\\tst.log", /*append*/true, /*flush*/true, /*prefix*/true);                
        try {        
        this.setLastAutomaticTimeout(new Date());
        log.writeLogString("tick");
        
        producer.tst();
        logger.info("Automatic timeout occurred");
        log.free();
        } catch (Exception e) {
            log.writeLogString("Exception occurred: " + e.toString());
        }
    }

    /**
     * @return the lastTimeout
     */
    public String getLastProgrammaticTimeout() {
        if (lastProgrammaticTimeout != null) {
            return lastProgrammaticTimeout.toString();
        } else {
            return "never";
        }
    }

    /**
     * @param lastTimeout the lastTimeout to set
     */
    public void setLastProgrammaticTimeout(Date lastTimeout) {
        this.lastProgrammaticTimeout = lastTimeout;
    }

    /**
     * @return the lastAutomaticTimeout
     */
    public String getLastAutomaticTimeout() {
        if (lastAutomaticTimeout != null) {
            return lastAutomaticTimeout.toString();
        } else {
            return "never";
        }
    }

    /**
     * @param lastAutomaticTimeout the lastAutomaticTimeout to set
     */
    public void setLastAutomaticTimeout(Date lastAutomaticTimeout) {
        this.lastAutomaticTimeout = lastAutomaticTimeout;
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
package timersession.ejb;
import javax.ejb.Local;

@Local
public interface ProducerLocal {
    public void tst();
    public void go();
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
package timersession.ejb;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Singleton;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
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;
import javax.jms.Topic;
import javax.ejb.Stateless;

@Stateless
public class ProducerBean implements ProducerLocal {
    @Resource(lookup = "jms/ConnectionFactory")
    //@Resource(mappedName = "jms/ConnectionFactory")     
    private static ConnectionFactory connectionFactory;
    //@Resource(mappedName = "jms/Queue")     
    @Resource(lookup = "jms/Queue")
    private static Queue queue;
    @Resource(lookup = "jms/Topic")
    private static Topic topic;
    
    //LogFile log = new LogFile("c:\\temp\\tst3.log", /*append*/true, /*flush*/true, /*prefix*/true);       
    
    public void tst() {
        LogFile log = new LogFile("c:\\temp\\tst4.log", /*append*/true, /*flush*/true, /*prefix*/true);               
        log.writeLogString("aaa");        
        log.free();
    }
    
    public void go() {
        /*final int NUM_MSGS;
        Connection connection = null;

        String destType = "queue";
        log.writeLogString("0Destination type is " + destType);

        NUM_MSGS = 1;

        Destination dest = null;

        try {
            if (destType.equals("queue")) {
                dest = (Destination) queue;
            } else {
                dest = (Destination) topic;
            }
        } catch (Exception e) {
            log.writeLogString("Error setting destination: " + e.toString());
            //e.printStackTrace();
            //System.exit(1);
            return;
        }
        log.writeLogString("1");
/*
        try {
            connection = connectionFactory.createConnection();
            log.writeLogString("2");
            Session session = connection.createSession(
                        false,
                        Session.AUTO_ACKNOWLEDGE);
            log.writeLogString("3");
            MessageProducer producer = session.createProducer(dest);
            TextMessage message = session.createTextMessage();
            log.writeLogString("4");
            for (int i = 0; i < NUM_MSGS; i++) {
                log.writeLogString("5");                
                message.setText(
                        "This is message " + (i + 1) + " from producer");
                log.writeLogString("Sending message: " + message.getText());
                producer.send(message);
            }
            log.writeLogString("6");
            producer.send(session.createMessage());
            log.writeLogString("7");
        } catch (Exception e) {
            log.writeLogString("Exception occurred: " + e.toString());
        } finally {
            if (connection != null) {
            log.writeLogString("8");                
                try {
                    connection.close();
                } catch (JMSException e) {
                     log.writeLogString(e.getMessage());
                }
            }
        }*/
    }
}



В классе TimerSessionBean в методе automaticTimeout при обращении к producer.tst(); возникает ошибка:
javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37996108
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, pulp!

> javax.ejb.EJBException: javax.ejb.CreateException: Could not create
> stateless EJB

Это не стектрейс.

--
Алексей
JID: alxt@ya.ru


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37997987
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стектрейс ошибки:

[#|2012-10-15T09:36:00.014+0400|SEVERE|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=122;_ThreadName=Thread-2;|javax.ejb.EJBException: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:454)
at com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:2547)
at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1899)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:89)
at $Proxy122.tst(Unknown Source)
at timersession.ejb.TimerSessionBean.automaticTimeout(TimerSessionBean.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundTimeout(SystemInterceptorProxy.java:149)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370)
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348)
at com.sun.ejb.containers.BaseContainer.callEJBTimeout(BaseContainer.java:4058)
at com.sun.ejb.containers.EJBTimerService.deliverTimeout(EJBTimerService.java:1832)
at com.sun.ejb.containers.EJBTimerService.access$100(EJBTimerService.java:108)
at com.sun.ejb.containers.EJBTimerService$TaskExpiredWork.run(EJBTimerService.java:2646)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:726)
at com.sun.ejb.containers.util.pool.NonBlockingPool.getObject(NonBlockingPool.java:247)
at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:449)
... 37 more
Caused by: javax.ejb.CreateException: Could not create stateless EJB
at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:534)
at com.sun.ejb.containers.StatelessSessionContainer.access$000(StatelessSessionContainer.java:95)
at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:724)
... 39 more
Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Unresolved Message-Destination-Ref timersession.ejb.ProducerBean/queue@java.lang.String@null into class timersession.ejb.ProducerBean: Illegal use of static field on class that only supports instance-based injection: private static javax.jms.Queue timersession.ejb.ProducerBean.queue
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:703)
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:470)
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:171)
at com.sun.ejb.containers.BaseContainer.injectEjbInstance(BaseContainer.java:1694)
at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:494)
... 41 more
Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Illegal use of static field on class that only supports instance-based injection: private static javax.jms.Queue timersession.ejb.ProducerBean.queue
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:618)
... 45 more
|#]

[#|2012-10-15T09:36:00.014+0400|SEVERE|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=122;_ThreadName=Thread-2;| at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:454)|#]
...
Рейтинг: 0 / 0
Как отправить сообщение JMS из EJBSession компонента?
    #37998002
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, pulp!

> com.sun.enterprise.container.common.spi.util.InjectionException: Illegal
> use of static field on class that only supports instance-based
> injection: private static javax.jms.Queue

Ну вот же английским по белому написано- нельзя помечать аннотациями для
сервера (@EJB, @Resource и т.п.) статические поля.

--
Алексей
JID: alxt@ya.ru


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отправить сообщение JMS из EJBSession компонента?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]