[jboss-user] [JNDI/Naming/Network] - TimerService issues
dolsen
do-not-reply at jboss.com
Wed Feb 18 18:50:46 EST 2009
Hi!
I'm setting some timers using EJB TimerService:
@Stateless
| public class CommandBean implements CommandRemote
| {
| static Logger logger = Logger.getLogger(PlayerBean.class);
|
| @Resource TimerService timerService;
|
| public void scheduleCommand(Command command)
| {
| timerService.createTimer(command.getDuration(), command);
| }
|
| public void scheduleContinousCommand(Command command)
| {
| timerService.createTimer(command.getDuration(), command.getDuration(), command);
| }
|
| public Collection<Command> getCommands(long userId)
| {
| Collection<Command> commands = new ArrayList<Command>();
| for (Object object : timerService.getTimers())
| {
| Timer timer = (Timer) object;
|
| Command command = (Command) timer.getInfo();
| command.setTimeRemaining(timer.getTimeRemaining());
| if (command.getUserId() == userId)
| {
| commands.add(command);
| }
| }
|
| return commands;
| }
|
| @Timeout
| public void runCommand(Timer timer)
| {
| Command command = (Command) timer.getInfo();
|
| logger.debug("runCommand: Firing command for user: " + command.getUserId() + " " + command.getDescription());
|
| User user = null;
|
| System.setProperty("java.security.policy", "server.policy");
| if (System.getSecurityManager() == null)
| {
| System.setSecurityManager(new RMISecurityManager());
| }
|
| InitialContext jndiContext;
| try
| {
| jndiContext = getInitialContext();
| UserRemote userRef = (UserRemote) jndiContext.lookup("UserRemote");
| UserRemote dao = (UserRemote) PortableRemoteObject.narrow(userRef, UserRemote.class);
| user = dao.findUser(command.getUserId());
| logger.debug("runCommand: loading userId: " + user.getId());
| }
| catch (NamingException e)
| {
| logger.error("NamingException: ", e);
| }
| ...
| }
|
| public static InitialContext getInitialContext() throws NamingException
| {
| Properties properties = new Properties();
|
| properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, System.getProperty(Context.INITIAL_CONTEXT_FACTORY));
| properties.setProperty(Context.URL_PKG_PREFIXES, System.getProperty(Context.URL_PKG_PREFIXES));
| properties.setProperty(Context.PROVIDER_URL, "jnp://" + System.getProperty("providerHost") + ":1099");
|
| return new InitialContext(properties);
| }
|
|
jboss.xml:
| <?xml version="1.0" encoding="UTF-8"?>
| <jboss>
| <enterprise-beans>
| <session>
| <ejb-name>UserBean</ejb-name>
| <jndi-name>UserRemote</jndi-name>
| </session>
| </enterprise-beans>
| </jboss
|
JNDI view shows:
+- UserRemote (class: Proxy for: com.feudalism.session.user.UserRemote)
This works fine, and the times run at the expected time.
The problem occurs when the server is restarted, or the application is redeployed.
At this point, when the timer fires I get the following error:
ervice=EJB3]) NamingException:
javax.naming.NameNotFoundException: UserRemote not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
at org.jnp.server.NamingServer.getObject(NamingServer.java:785)
at org.jnp.server.NamingServer.lookup(NamingServer.java:443)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:595)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:713)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:673)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.feudalism.session.command.CommandBean.runCommand(CommandBean.java:89)
This is running on JBoss_5_0_0_GA
Any help is appreciated.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4211298#4211298
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4211298
More information about the jboss-user
mailing list