Re: Class Server requests

Dan Creswell <[email protected]>
Newsgroups gmane.comp.java.sun.jini
Message-ID <[email protected]>
Dave Brosius wrote:
>>> Hmmm, are your classes in a .jar or are they in a directory?
>>>
>>> If they're in a directory, try adding an additional "/" to that codebase
>>> thus:
>
> Should work either way!
>

Well, you might like it to work that way but see below first.....

> WOW the / did it.
>
> Pretty fragile by Jini :)
>

:)

Not really - see, you are required to specify an appropriately usable
URL and "http://www.dancres.org" (notice no last "/") isn't whilst
"http://www.dancres.org/" is.

See here for more details:

http://en.wikipedia.org/wiki/Uniform_resource_locator

(Pay particular attention to what constitutes the path element and note
that "http://www.dancres.org" would have no path element and thus isn't
useful without additional default assumptions).

Now, you might say "but my browser accepts this URL" and it does but it
also automatically appends a "/" on the basis that that's what you
really meant.

Dan.

> many thanks.
>
> ----- Original Message -----
> From: "Dan Creswell" <[email protected]>
> To: <[email protected]>
> Sent: Sunday, December 31, 2006 10:38 AM
> Subject: Re: Class Server requests
>
>
>> Dave Brosius wrote:
>>> *Command line:*
>>>
>>> java -classpath .;..\lib\jini-core.jar;..\lib\jini-ext.jar
>>> -Djava.security.policy=..\policy.all
>>> com.mebigfatguy.jinitest.JiniTestService
>>>
>>
>> Hmmm, this isn't too Jini 2.1 friendly ^^^^^ .jar wise but it probably
>> doesn't matter for now.
>>
>>> *Setting codebase*
>>>
>>>  public static void main(String[] args) {
>>>   try {
>>>    System.setSecurityManager (new RMISecurityManager ());
>>>
>>>    int port = Integer.valueOf(args[0]).intValue();
>>>    JiniClassServer cs = new JiniClassServer(port);
>>>    cs.start();
>>>    InetAddress.getLocalHost();
>>>    System.setProperty("java.rmi.server.codebase", "http://" +
>>> InetAddress.getLocalHost().getHostAddress() + ":" + port);
>>>
>>
>> Hmmm, are your classes in a .jar or are they in a directory?
>>
>> If they're in a directory, try adding an additional "/" to that codebase
>> thus:
>>
>>    System.setProperty("java.rmi.server.codebase", "http://" +
>> InetAddress.getLocalHost().getHostAddress() + ":" + port + "/");
>>
>>>    discovery = new LookupDiscovery(LookupDiscovery.ALL_GROUPS);
>>>    leaseManager = new LeaseRenewalManager();
>>>
>>>    discovery.addDiscoveryListener(new
>>> JiniTestDiscoveryListener(leaseManager));
>>>
>>>    JOptionPane.showMessageDialog(null, "Shutdown service");
>>>   } catch (Exception e) {
>>>    e.printStackTrace();
>>>   }
>>>  }
>>>
>>> *Installing service*
>>> **
>>>  public void discovered(DiscoveryEvent event) {
>>>   try {
>>>    ServiceRegistrar[] registrars = event.getRegistrars();
>>>
>>>    Entry[] attr = new Entry[1];
>>>          attr[0] = new Name("JiniTest");
>>>
>>>    ServiceItem item = new ServiceItem(null, new JiniTestImpl(), attr);
>>>    LeaseListener listener = new JiniTestLeaseListener();
>>>
>>>    for (ServiceRegistrar registrar : registrars) {
>>>      ServiceRegistration reg = registrar.register(item, Lease.FOREVER);
>>>      leaseManager.renewUntil(reg.getLease(), Lease.FOREVER, listener);
>>>    }
>>>   } catch (RemoteException re) {
>>>    re.printStackTrace();
>>>   }
>>>  }
>>>
>>>
>>> ----- Original Message -----
>>> From: "Dan Creswell" <[email protected]
>>> <mailto:[email protected]>>
>>> To: "Dave Brosius" <[email protected]
>>> <mailto:[email protected]>>
>>> Cc: <[email protected] <mailto:[email protected]>>
>>> Sent: Sunday, December 31, 2006 5:49 AM
>>> Subject: Re: Class Server requests
>>>
>>>> Hi Dave,
>>>>
>>>> Dave Brosius wrote:
>>>>> 1) I run launch-all.exe to run the environment. My service is run
>>>>> with -Djava.security.policy=policy.all where the policy allows all
>>>>>
>>>>
>>>> So you're running direct from the command-line?  If so, can you post it
>>>> please?
>>>>
>>>>> 2) Wrote my own, that is embedded in the service 'installer' that
>>>>> simply
>>>>> does getResourceAsStream on the relevent class file and pumps it out
>>> as an
>>>>> http response. Of course it never gets that far, as i am never asked
>>> for a
>>>>> class, only '/' (i also get HEAD requests for '/' as well).
>>>>>
>>>>
>>>> Okay - so what did you set the service's codebase to?
>>>>
>>>>> 3) 2.1
>>>>>
>>>>> 4) Well, registration is failing as i get ClassNotFoundExceptions.
>>> Which is
>>>>> certainly understandable as my class server gets gibberish for
>>>>> requests.
>>>>>
>>>>
>>>> Which suggests a configuration issue - likely codebase.....
>>>>
>>>>> Dec 31, 2006 5:21:30 AM com.sun.jini.reggie.RegistrarProxy
>>> handleException
>>>>> INFO: unmarshalling failure
>>>>> java.lang.ClassNotFoundException:
>>>>> com.mebigfatguy.jinitest.JiniTestImpl
>>>>
>>>> Hmmm, so I could be wrong on this one but looking ahead this ^^^^^
>>>> classname looks a bit odd.  Are you using JERI Exporters or are you
>>>> using standard RMI/UnicastRemoteObject?  I suspect you _might_ be
>>>> passing the wrong thing to JoinManager in your service's init code.
>>>>
>>>> Just a note for later......
>>>>
>>>> Dan.
>>>>
>>>>>        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>>>        at java.security.AccessController.doPrivileged(Native Method)
>>>>>        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>>>>        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>>>>>        at
>>>>> net.jini.loader.pref.PreferredClassLoader.loadClass(PreferredClassLoa
>>>>> der.java:922)
>>>>>        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>>>>        at
>>>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>>>>>        at java.lang.Class.forName0(Native Method)
>>>>>        at java.lang.Class.forName(Class.java:242)
>>>>>        at
>>>>> net.jini.loader.pref.PreferredClassProvider.loadClass(PreferredClassP
>>>>> rovider.java:613)
>>>>>        at
>>> java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247)
>>>>>        at
>>>>> net.jini.loader.ClassLoading.loadClass(ClassLoading.java:138)
>>>>>        at
>>>>> net.jini.io.MarshalInputStream.resolveClass(MarshalInputStream.java:2
>>>>> 96)
>>>>>        at
>>>>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:153
>>>>> 8)
>>>>>        at
>>>>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
>>>>>        at
>>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
>>>>> 693)
>>>>>        at
>>>>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
>>>>>        at
>>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
>>>>>        at
>>>>> net.jini.io.MarshalledInstance.get(MarshalledInstance.java:358)
>>>>>        at
>>>>> net.jini.io.MarshalledInstance.get(MarshalledInstance.java:287)
>>>>>        at
>>>>> com.sun.jini.proxy.MarshalledWrapper.get(MarshalledWrapper.java:127)
>>>>>        at com.sun.jini.reggie.Item.get(Item.java:141)
>>>>>        at com.sun.jini.reggie.Item.toServiceItem(Item.java:177)
>>>>>        at com.sun.jini.reggie.Matches.get(Matches.java:62)
>>>>>        at
>>>>> com.sun.jini.reggie.RegistrarProxy.lookup(RegistrarProxy.java:128)
>>>>>        at
>>> com.sun.jini.example.browser.Browser.genMatches(Browser.java:535)
>>>>>        at
>>>>> com.sun.jini.example.browser.Browser.genText(Browser.java:439)
>>>>>        at
>>>>> com.sun.jini.example.browser.Browser.setText(Browser.java:426)
>>>>>        at
>>>>> com.sun.jini.example.browser.Browser.update(Browser.java:1260)
>>>>>        at
>>> com.sun.jini.example.browser.Browser.resetTmpl(Browser.java:797)
>>>>>        at
>>>>> com.sun.jini.example.browser.Browser.access$3200(Browser.java:141)
>>>>>        at
>>>>> com.sun.jini.example.browser.Browser$Lookup.actionPerformed(Browser.j
>>>>>
>>>>> ----- Original Message -----
>>>>> From: "Dan Creswell" <[email protected]
>>> <mailto:[email protected]>>
>>>>> To: "Dave Brosius" <[email protected]
>>> <mailto:[email protected]>>
>>>>> Cc: <[email protected] <mailto:[email protected]>>
>>>>> Sent: Sunday, December 31, 2006 4:54 AM
>>>>> Subject: Re: Class Server requests
>>>>>
>>>>>
>>>>>> Hi Dave,
>>>>>>
>>>>>> Need some more information:
>>>>>>
>>>>>> (1) How are you running your service?  And can you post the relevant
>>>>>> configs, scripts etc.
>>>>>>
>>>>>> (2) What are you using as the class server and how are you running
>>>>>> it?
>>>>>>
>>>>>> (3) Which version of Jini are you using?
>>>>>>
>>>>>> (4) Can you explain why you are concerned by the GET request?  Is
>>>>>> something not working and, if so, can you provide more details?
>>>>>>
>>>>>> Happy New Year,
>>>>>>
>>>>>> Dan.
>>>>>>
>>>>>> Dave Brosius wrote:
>>>>>>> Howdy,
>>>>>>>
>>>>>>>    New Jini dabbler, here.
>>>>>>>
>>>>>>> I was trying to get my service to run, set up a Class server, and
>>>>>>> the
>>>>>>> server
>>>>>>> is getting the request
>>>>>>>
>>>>>>> GET / HTTP/1.1
>>>>>>>
>>>>>>> What am i supposed to return for that?
>>>>>>>
>>>>>>> I was expecting the name of some class?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> thanks,
>>>>>>>
>>>>>>> dave
>>>>>>>
>>>>>>>

--------------------------------------------------------------------------
Getting Started:     http://www.jini.org/wiki/Category:Getting_Started
Community Web Site:  http://jini.org
jini-users Archive:  http://archives.java.sun.com/archives/jini-users.html
Unsubscribing:       email "signoff JINI-USERS"  to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.