[EJB 3.0] - EJB3 Timer - NotSerializableException
by jasperbg
I'm using EJB3 Timer to schedule retries of failed billing jobs.
Here's the code that schedules a billing job for retrying:
public void schedule(@NonNull final Invoice invoice, @NonNull final BillingRetryType type) {
| Calendar twelveHoursFromNow = Calendar.getInstance();
| twelveHoursFromNow.add(Calendar.HOUR, 12);
|
| long everyTwelveHours = 12 * 60 * 60 * 1000;
|
| ctx.getTimerService().createTimer(twelveHoursFromNow.getTime(), everyTwelveHours, new RetryData(invoice, type));
| }
I get the following exception on the last line of the method:
13:03:04,124 ERROR [GeneralPurposeDatabasePersistencePlugin] Cannot serialize: nz.co.discountdomains.billing.ejb.RetryData@1cb4598
| java.io.NotSerializableException: java.lang.reflect.Method
| at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081)
| at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
| at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
| at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
| at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
| at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
| at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
| at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
| at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
| at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
| at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
| at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
| at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
| at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
| at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
| at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
| at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
| at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
| at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
| at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
| at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
| at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
| at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
| at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
| at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
| at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
| at org.jboss.ejb.txtimer.GeneralPurposeDatabasePersistencePlugin.serialize(GeneralPurposeDatabasePersistencePlugin.java:365)
| at org.jboss.ejb.txtimer.GeneralPurposeDatabasePersistencePlugin.insertTimer(GeneralPurposeDatabasePersistencePlugin.java:184)
| at org.jboss.ejb.txtimer.DatabasePersistencePolicy.insertTimer(DatabasePersistencePolicy.java:111)
| at sun.reflect.GeneratedMethodAccessor69.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
| at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
| at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
| at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
| at $Proxy22.insertTimer(Unknown Source)
| at org.jboss.ejb.txtimer.TimerServiceImpl.createTimer(TimerServiceImpl.java:256)
| at org.jboss.ejb3.timerservice.jboss.TimerServiceFacade.createTimer(TimerServiceFacade.java:56)
| at nz.co.discountdomains.billing.ejb.BillingRetryBean.schedule(BillingRetryBean.java:30)
(Exception snipped to make the post a bit shorter...)
The RetryData class is simple, it's defined as follows:
class RetryData implements Serializable {
| private static final long serialVersionUID = 1L;
|
| private Invoice invoice;
| private BillingRetryType type;
|
| public RetryData(Invoice invoice, BillingRetryType type) {
| this.invoice = invoice;
| this.type = type;
| }
|
| public Invoice getInvoice() {
| return invoice;
| }
|
| public BillingRetryType getType() {
| return type;
| }
| }
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3985680#3985680
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3985680
19Â years, 7Â months
[Security & JAAS/JBoss] - Re: Why JAAS authenticate() fails?
by benccit
Hi jaikiran, moj_sham,
Thanks for your help so far. I still can't make it work. For unknown reason, I got "No security context" message as follows:
REQUEST URI =/secret/my_secret.html
..
servletPath=/secret/my_secret.html
isSecure=false
..
2006-11-14 00:42:28,540 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Security checking request GET /secret/my_secret.html2006-11-14 00:42:28,540 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[Restricted Area]' against GET
/secret/my_secret.html --> true
2006-11-14 00:42:28,540 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[Restricted Area]' against GET
/secret/my_secret.html --> true
2006-11-14 00:42:28,540 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Calling hasUserDataPermission()
2006-11-14 00:42:28,541 DEBUG [org.apache.catalina.realm.RealmBase] User data constraint has no restrictions
2006-11-14 00:42:28,541 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Calling authenticate()
2006-11-14 00:42:28,553 DEBUG [org.apache.catalina.authenticator.FormAuthenticator] Save request in session 'C68A8157F574D0E1024F023A2687D19
D'
2006-11-14 00:42:28,591 DEBUG [org.apache.catalina.core.ApplicationDispatcher] servletPath=/loginform.html, pathInfo=null, queryString=null, name=null
2006-11-14 00:42:28,591 DEBUG [org.apache.catalina.core.ApplicationDispatcher] Path Based Forward 2006-11-14 00:42:28,596 DEBUG [org.apache.catalina.core.StandardWrapper] Returning non-STM instance
2006-11-14 00:42:28,598 TRACE [org.jboss.web.tomcat.security.RunAsListener] default, runAs: null
2006-11-14 00:42:28,598 TRACE [org.jboss.web.tomcat.security.RunAsListener] default, runAs: null2006-11-14 00:42:28,598 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/]] default: DefaultServlet.serveResource: Serving resource '/loginform.html' headers and data
...
2006-11-14 00:42:49,253 DEBUG [org.apache.catalina.connector.CoyoteAdapter] Requested cookie session id is C68A8157F574D0E1024F023A2687D19D
2006-11-14 00:42:49,253 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost]] REQUEST URI =/secret/j_security_check
...
2006-11-14 00:42:49,254 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost]] header=referer=http://128.32.nnn.nn:8080/secret/my_secret.html
...
method=POST
parameter=j_username=joe1
parameter=j_password=pass
..
queryString=null
..
servletPath=/secret/j_security_check
..
isSecure=false
TRACE [org.jboss.web.tomcat.security.FormAuthValve] Enter, j_username=joe1
DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Security checking request POST /secret/j_security_check
DEBUG [org.apache.catalina.authenticator.FormAuthenticator] Authenticating username 'joe1'
2006-11-14 00:42:49,258 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] Begin authenticate, username=joe1
2006-11-14 00:42:49,259 DEBUG [org.apache.catalina.loader.WebappClassLoader] findResources(jndi.properties)
2006-11-14 00:42:49,267 DEBUG [org.apache.catalina.loader.WebappClassLoader] loadClass(org.jnp.interfaces.NamingContextFactory, false)
2006-11-14 00:42:49,267 DEBUG [org.apache.catalina.loader.WebappClassLoader] Searching local repositories
2006-11-14 00:42:49,267 DEBUG [org.apache.catalina.loader.WebappClassLoader] findClass(org.jnp.interfaces.NamingContextFactory)
2006-11-14 00:42:49,267 DEBUG [org.apache.catalina.loader.WebappClassLoader] findClassInternal(org.jnp.interfaces.NamingContextFactory
)
2006-11-14 00:42:49,267 DEBUG [org.apache.catalina.loader.WebappClassLoader] --> Passing on ClassNotFoundException
2006-11-14 00:42:49,267 DEBUG [org.apache.catalina.loader.WebappClassLoader] Delegating to parent classloader at end: java.net.FactoryURLClassLoader@dc64a2
2006-11-14 00:42:49,267 DEBUG [org.apache.catalina.loader.WebappClassLoader] Loading class from parent
2006-11-14 00:42:49,267 DEBUG [org.apache.catalina.loader.WebappClassLoader] loadClass(org.jboss.naming.java.javaURLContextFactory, false)
2006-11-14 00:42:49,268 DEBUG [org.apache.catalina.loader.WebappClassLoader] Searching local repositories
2006-11-14 00:42:49,268 DEBUG [org.apache.catalina.loader.WebappClassLoader] findClass(org.jboss.naming.java.javaURLContextFactory)
2006-11-14 00:42:49,268 DEBUG [org.apache.catalina.loader.WebappClassLoader] findClassInternal(org.jboss.naming.java.javaURLContextFactory)
2006-11-14 00:42:49,269 DEBUG [org.apache.catalina.loader.WebappClassLoader] loadClass(javax.naming.spi.ObjectFactory, false)
2006-11-14 00:42:49,269 DEBUG [org.apache.catalina.loader.WebappClassLoader] Returning class class org.jboss.naming.java.javaURLContextFactory
2006-11-14 00:42:49,269 DEBUG [org.apache.catalina.loader.WebappClassLoader] Loaded by WebappClassLoader
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
java.net.FactoryURLClassLoader@dc64a2
2006-11-14 00:42:49,269 DEBUG [org.apache.catalina.loader.WebappClassLoader] Loading class from local repository
2006-11-14 00:42:49,269 DEBUG [org.apache.catalina.loader.WebappClassLoader] loadClass(org.jnp.interfaces.Naming, false)2006-11-14 00:42:49,270 DEBUG [org.apache.catalina.loader.WebappClassLoader] Searching local repositories
2006-11-14 00:42:49,270 DEBUG [org.apache.catalina.loader.WebappClassLoader] findClass(org.jnp.interfaces.Naming)
2006-11-14 00:42:49,270 DEBUG [org.apache.catalina.loader.WebappClassLoader] findClassInternal(org.jnp.interfaces.Naming)2006-11-14 00:42:49,270 DEBUG [org.apache.catalina.loader.WebappClassLoader] --> Passing on ClassNotFoundException2006-11-14 00:42:49,270 DEBUG [org.apache.catalina.loader.WebappClassLoader] Delegating to parent classloader at end: java.net.FactoryURLClassLoader@dc64a2
2006-11-14 00:42:49,270 DEBUG [org.apache.catalina.loader.WebappClassLoader] Loading class from parent
2006-11-14 00:42:49,270 DEBUG [org.apache.catalina.loader.WebappClassLoader] loadClass(javax.naming.NamingException, false)
2006-11-14 00:42:49,270 DEBUG [org.apache.catalina.loader.WebappClassLoader] loadClass(org.jnp.server.NamingServer, false)2006-11-14 00:42:49,270 DEBUG [org.apache.catalina.loader.WebappClassLoader] Searching local repositories
2006-11-14 00:42:49,270 DEBUG [org.apache.catalina.loader.WebappClassLoader] findClass(org.jnp.server.NamingServer)
2006-11-14 00:42:49,270 DEBUG [org.apache.catalina.loader.WebappClassLoader] findClassInternal(org.jnp.server.NamingServer)2006-11-14 00:42:49,271 DEBUG [org.apache.catalina.loader.WebappClassLoader] --> Passing on ClassNotFoundException2006-11-14 00:42:49,271 DEBUG [org.apache.catalina.loader.WebappClassLoader] Delegating to parent classloader at end: java.net.FactoryURLClassLoader@dc64a2
DEBUG [org.apache.catalina.loader.WebappClassLoader] Loading class from parent
2006-11-14 00:42:49,271 DEBUG [org.apache.catalina.loader.WebappClassLoader] loadClass(org.jnp.interfaces.NamingContext, false)
2006-11-14 00:42:49,271 DEBUG [org.apache.catalina.loader.WebappClassLoader] Searching local repositories
2006-11-14 00:42:49,271 DEBUG [org.apache.catalina.loader.WebappClassLoader] findClass(org.jnp.interfaces.NamingContext)
2006-11-14 00:42:49,271 DEBUG [org.apache.catalina.loader.WebappClassLoader] findClassInternal(org.jnp.interfaces.NamingContext)
2006-11-14 00:42:49,271 DEBUG [org.apache.catalina.loader.WebappClassLoader] --> Passing on ClassNotFoundException2006-11-14 00:42:49,271 DEBUG [org.apache.catalina.loader.WebappClassLoader] Delegating to parent classloader at end: java.net.FactoryURLClassLoader@dc64a2
2006-11-14 00:42:49,271 DEBUG [org.apache.catalina.loader.WebappClassLoader] Loading class from parent
2006-11-14 00:42:49,272 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] No security context for authenticate(String, String)
2006-11-14 00:42:49,272 DEBUG [org.apache.catalina.core.ApplicationDispatcher] servletPath=/loginerror.html, pathInfo=null, queryString=null, name=null
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3985675#3985675
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3985675
19Â years, 7Â months
[JNDI/Naming/Network] - JNDI lookup fails with JBoss4.0.4GA Patch1
by msmail315
Hi,
I'm trying to do a JNDI lookup on the DataSource (MySQL) under java: namespace in my JSP and the lookup fails. I've configured all the files pertinent to creating a new data source. I see the new datasource bound in the JNDIView (but not in the global namespace).
Here's the code:
<%@ page language="java" %>
<%@ page import="javax.sql.*,javax.naming.*,java.sql.*" %>
<%
InitialContext ctxt = new InitialContext();
DataSource ds = (DataSource) ctxt.lookup("java:/jdbc/MySqlDS");
Connection con = ds.getConnection();
if(con != null) out.println("Connection not null");
else out.println("Connection is null");
%>
I wanted to set the <use-java-context>false</use-java-context> in the *.ds file but per MySQL its not a good practice for a production environment. How can I circumvent this issue? I want to able to access the data source in a servlet as well as in a POJO.
Thanx for your help.
Mash
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3985672#3985672
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3985672
19Â years, 7Â months
[Security & JAAS/JBoss] - Logout Issue
by nipunbatra
Hi,
I have 2 applications on 2 different servers, If I logout from one application and go to the other still I successfully login into other application.
I think if I logout from fisrt application I shd not be able to login into second applications.
the other problem is, now from second application if I go back to first application, I again get principal in first application request.getUserPrincipal(), everything runs ok again but the moment I put anything into session it throws exception saying that this session is already invalidated, whcih is true coz I inavildated the session when I logout from first application.
is there anything we can do, I mean when i logout from any application i shd be logged out from all application?
Thanks
Nipun
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3985671#3985671
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3985671
19Â years, 7Â months