I will apply the fix to this issue tomorrow to g 2.1 branch. On Thu, Mar 18, 2010 at 7:04 PM, Ashish Jain <ashja...@gmail.com> wrote:
> I tried fixing this up by making FileKeystoreInstance serializable however > I hit another issue > > > java.rmi.UnmarshalException: error unmarshalling return; nested exception > is: > java.io.WriteAbortedException: writing aborted; > java.io.NotSerializableE > xception: org.apache.geronimo.kernel.basic.ProxyMethodInterceptor > > at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:172) > at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source) > at > javax.management.remote.rmi.RMIConnectionImpl_Stub.invoke(RMIConnecti > onImpl_Stub.java:400) > at > javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection. > invoke(RMIConnector.java:984) > > This prompts me to even make ProxyMethodInterceptor serializable and all > the inner classes too. > > So as to not make such major modification which I am sure will keep > affecting one class after other. > I wish we can use another approach which is similar to #1 but not same. We > can add a method to > KeystoreManager interface something like "initializeKeystores" and do a > kernel invoke of this method > instead of previous one where we were doing a getAttribute on a method > which does not return anything > The newly added method "initializeKeystores" will in turn calls up > getKeystores. This will help us attain > the goal of adding the newly created keystores through Java provided > keytool as Gbean in geronimo. > > Thanks > Ashish > > > > On Tue, Mar 16, 2010 at 6:18 PM, Ashish Jain <ashja...@gmail.com> wrote: > >> Thanks Jack and Joe for your choices. I will go ahead and implement the >> option #1. >> >> >> On Mon, Mar 15, 2010 at 9:17 PM, Jack Cai <greensi...@gmail.com> wrote: >> >>> Interesting... Since the problem is really that FileKeystoreInstance is >>> not seriazable, I don't see why changing the getter return type would help >>> if the received objects are still instances of FileKeystoreInstance. Anyway, >>> I agree with Joe - Option 1 looks more elegant. >>> >>> -Jack >>> >>> >>> On Mon, Mar 15, 2010 at 1:25 PM, Ashish Jain <ashja...@gmail.com> wrote: >>> >>>> The serialization problem is popping up due to the return type >>>> associated with getKeystores(). But in the case of getKeystores1() there is >>>> no return variable. So it helps in overcoming this problem. >>>> >>>> >>>> On Mon, Mar 15, 2010 at 8:18 AM, Jack Cai <greensi...@gmail.com> wrote: >>>> >>>>> I still don't quite understand Option 2. So what would be stored in >>>>> this new attribute "keystores1"? If it still contains an instance of >>>>> FileKeystoreInstance, then there is still a serialization problem. >>>>> >>>>> -Jack >>>>> >>>>> >>>>> On Sat, Mar 13, 2010 at 5:20 PM, Ashish Jain <ashja...@gmail.com>wrote: >>>>> >>>>>> Hi Joe, >>>>>> >>>>>> Thanks for your comments. The intent of using option #2 was to make >>>>>> use of getAttribute and also since modifying the KeystoreManager >>>>>> interface >>>>>> will not have any effect on any existing functionalities. However as you >>>>>> pointed out a get method w/o any return types may be misleading. >>>>>> >>>>>> Thanks >>>>>> Ashish >>>>>> >>>>>> >>>>>> On Fri, Mar 12, 2010 at 8:46 PM, Joe Bohn <joe.b...@earthlink.net>wrote: >>>>>> >>>>>>> I don't know much about the details of the problem but it seems to me >>>>>>> that you would either make the class serializable (option #1) or >>>>>>> exclude it >>>>>>> from serialization if it is not necessary. I don't see how this would >>>>>>> impact any existing functions. So I guess I would vote for #1. >>>>>>> >>>>>>> I don't understand why you would want to have a "get*" method that >>>>>>> doesn't return anything - but perhaps I'm missing the point of option >>>>>>> #2. >>>>>>> >>>>>>> Joe >>>>>>> >>>>>>> >>>>>>> >>>>>>> Ashish Jain wrote: >>>>>>> >>>>>>>> Hi ALL, >>>>>>>> >>>>>>>> I have opened up a JIRA GERONIMO-5180 on the unlockKeystore command >>>>>>>> failure if keystore is created with keytool.exe. I was trying to fix >>>>>>>> this >>>>>>>> issue >>>>>>>> which requires some changes in the class declaration or interface. >>>>>>>> Following code is being utilized to fix up the issue >>>>>>>> KeystoreInstance[] >>>>>>>> keystores=(KeystoreInstance[])kernel.getAttribute(abstractName,"keystores"); >>>>>>>> where abstractName is obtained through >>>>>>>> "org.apache.geronimo.management.geronimo.KeystoreManager". However I >>>>>>>> hit the following exception: >>>>>>>> >>>>>>>> java.rmi.UnmarshalException: error unmarshalling return; nested >>>>>>>> exception is: >>>>>>>> java.io.WriteAbortedException: writing aborted; >>>>>>>> java.io.NotSerializableE >>>>>>>> xception: org.apache.geronimo.security.keystore.FileKeystoreInstance >>>>>>>> at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:172) >>>>>>>> at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source) >>>>>>>> at >>>>>>>> javax.management.remote.rmi.RMIConnectionImpl_Stub.invoke(RMIConnecti >>>>>>>> onImpl_Stub.java:400) >>>>>>>> at >>>>>>>> javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection. >>>>>>>> invoke(RMIConnector.java:984) >>>>>>>> >>>>>>>> There are 2 ways to fix this up. >>>>>>>> >>>>>>>> 1) Make the class >>>>>>>> org.apache.geronimo.security.keystore.FileKeystoreInstance >>>>>>>> serializable. >>>>>>>> 2) add a new variable in FileKeystoreManager and add a new method in >>>>>>>> KeystoreManager which does not return anything and just gives a call >>>>>>>> to getKeystores(). For example getKeystores1() as the new method in >>>>>>>> KeystoreManager and a new variable as keystores1. >>>>>>>> >>>>>>>> I shall prefer #2 over #1 as it should not have any effect on >>>>>>>> existing functionalities. >>>>>>>> >>>>>>>> Suggestions/advice/comments?? >>>>>>>> >>>>>>>> Thanks >>>>>>>> Ashish >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >