You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Olivier Dusacq <od...@laas.fr> on 2005/03/15 14:55:49 UTC

Servlet / Jini lookup

Hello,

I'm trying to contact a Jini lookup service (reggie) from a simple 
servlet. I'm using Tomcat 5.5.7, Java 1.5.0_01, Jini 1.2.1 and Solaris8.

The problem is that, after the call to LookupDiscoveryManager() (see 
source code below), the "discovered()" method is never called back.

Here is what I get in my browser after an exec :
********
before LookupDiscoveryManager
end
********

I have successfully run a similar code in a standalone Java app (i.e. 
without Tomcat / servlet), and everything is OK.

In fact, I have no error message nor Exception thrown. :-( I simply 
don't have any response from reggie.

Any help would be appreciate,
Olive

PS: I'm new to Tomcat and Jini.



=====================
== core servlet
=====================

     protected void doGet(HttpServletRequest request,
			 HttpServletResponse response)
		 throws ServletException, IOException {

         response.setContentType("text/plain");
         PrintWriter out = response.getWriter();

         new searchALookup(out).start();
         try {
             Thread.sleep(30000);
         } catch (InterruptedException ie) {
             out.println("InterruptedException: " + ie.getMessage());
         }
         out.println("end");
         out.close();
     }



======================
== searchALookup.java
======================

import java.io.*;
import net.jini.core.discovery.LookupLocator;
import net.jini.core.lookup.*;
import net.jini.discovery.*;

public class searchALookup extends Thread implements DiscoveryListener {

     private LookupDiscoveryManager discover;
     private PrintWriter sortie;

     public chercheLookup(PrintWriter out) {
         sortie = out;
     }

     public void run() {
         try {
             startServiceDiscovery();
         } catch (IOException ioe) {
             sortie.println("Error while connecting to service");
         }
     }

     public synchronized void discovered(DiscoveryEvent dev) {
         sortie.println("--> Discovered");
         ServiceRegistrar[] lookup = dev.getRegistrars();
         // We may have discovered one or more lookup services
	sortie.println(lookup.length +" lookups decouverts");
     }

     public synchronized void discarded(DiscoveryEvent dev) {
         sortie.println("discarded");
     }

     private void startServiceDiscovery()
         throws IOException {

	String[] groups = null;
	LookupLocator[] locators = null;

	try{
	    LookupLocator locator =
		new LookupLocator("jini://REGGIE_HOSTNAME");
	    locators = new LookupLocator[]{locator};
	    groups=DiscoveryGroupManagement.NO_GROUPS;
	}catch(java.net.MalformedURLException e){
	    groups = new String[]{"public"};
	    sortie.println("Groups ="+groups[0]);
	}
	
         // Initialize for receiving events from the lookup service
         sortie.println("before LookupDiscoveryManager");
	discover = new LookupDiscoveryManager(groups, locators, this);
     }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Re: Servlet / Jini lookup

Posted by A Leg <ha...@yahoo.com>.
Hi

I have made one servlet for JINI/RIO for
http://compiere-mfgscm.sourceforge.net/

It works and it is license apache v2.

It is not already online because it is part of a lot of softs, I am 
currently testings.
I will publish during may probably.

If you need I can send you elements.
Contact me on my mail.

Andre

Olivier Dusacq wrote:

> Hello,
>
> I think I have found something very interesting to solve my problem. I 
> tried to put the Jini jar-files (jini-core.jar, jini-ext.jar and 
> sun-util.jar) in $CATALINA_HOME/common/lib, or 
> $CATALINA_BASE/shared/lib, or anywhere if I set correctly the 
> classpath in setclasspath.sh (instead of placing these jars in 
> WEB-INF/lib as I did before). After that, the LookupDiscoveryManager() 
> seems OK. I suspect a classloader issue, but I'm not sure. Maybe 
> somebody on this list could explain this ?
>
> But now, I'm stuck with some NoClassDefFoundError or 
> ClassCastException... I think it's the "same" classloader problem. In 
> fact, I don't know if it's good idea to place jars in the common 
> folders. But is there any other solution to make Jini and Tomcat 
> working together ? Is it possible to tell to Tomcat: "now use the 
> Webapp classloader when dealing with these 3 Jini jars" ??
>
> Thanks, Olive
>
>
> Olivier Dusacq wrote:
>
>> Hello,
>>
>> I'm trying to contact a Jini lookup service (reggie) from a simple 
>> servlet. I'm using Tomcat 5.5.7, Java 1.5.0_01, Jini 1.2.1 and Solaris8.
>>
>> The problem is that, after the call to LookupDiscoveryManager() (see 
>> source code below), the "discovered()" method is never called back.
>>
>> Here is what I get in my browser after an exec :
>> ********
>> before LookupDiscoveryManager
>> end
>> ********
>>
>> I have successfully run a similar code in a standalone Java app (i.e. 
>> without Tomcat / servlet), and everything is OK.
>>
>> In fact, I have no error message nor Exception thrown. :-( I simply 
>> don't have any response from reggie.
>>
>> Any help would be appreciate,
>> Olive
>>
>> PS: I'm new to Tomcat and Jini.
>>
>>
>>
>> =====================
>> == core servlet
>> =====================
>>
>> protected void doGet(HttpServletRequest request,
>> HttpServletResponse response)
>> throws ServletException, IOException {
>>
>> response.setContentType("text/plain");
>> PrintWriter out = response.getWriter();
>>
>> new searchALookup(out).start();
>> try {
>> Thread.sleep(30000);
>> } catch (InterruptedException ie) {
>> out.println("InterruptedException: " + ie.getMessage());
>> }
>> out.println("end");
>> out.close();
>> }
>>
>>
>>
>> ======================
>> == searchALookup.java
>> ======================
>>
>> import java.io.*;
>> import net.jini.core.discovery.LookupLocator;
>> import net.jini.core.lookup.*;
>> import net.jini.discovery.*;
>>
>> public class searchALookup extends Thread implements DiscoveryListener {
>>
>> private LookupDiscoveryManager discover;
>> private PrintWriter sortie;
>>
>> public chercheLookup(PrintWriter out) {
>> sortie = out;
>> }
>>
>> public void run() {
>> try {
>> startServiceDiscovery();
>> } catch (IOException ioe) {
>> sortie.println("Error while connecting to service");
>> }
>> }
>>
>> public synchronized void discovered(DiscoveryEvent dev) {
>> sortie.println("--> Discovered");
>> ServiceRegistrar[] lookup = dev.getRegistrars();
>> // We may have discovered one or more lookup services
>> sortie.println(lookup.length +" lookups decouverts");
>> }
>>
>> public synchronized void discarded(DiscoveryEvent dev) {
>> sortie.println("discarded");
>> }
>>
>> private void startServiceDiscovery()
>> throws IOException {
>>
>> String[] groups = null;
>> LookupLocator[] locators = null;
>>
>> try{
>> LookupLocator locator =
>> new LookupLocator("jini://REGGIE_HOSTNAME");
>> locators = new LookupLocator[]{locator};
>> groups=DiscoveryGroupManagement.NO_GROUPS;
>> }catch(java.net.MalformedURLException e){
>> groups = new String[]{"public"};
>> sortie.println("Groups ="+groups[0]);
>> }
>> // Initialize for receiving events from the lookup service
>> sortie.println("before LookupDiscoveryManager");
>> discover = new LookupDiscoveryManager(groups, locators, this);
>> }
>> }
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Re: Servlet / Jini lookup

Posted by Olivier Dusacq <od...@laas.fr>.
Hello,

I think I have found something very interesting to solve my problem. I 
tried to put the Jini jar-files (jini-core.jar, jini-ext.jar and 
sun-util.jar) in $CATALINA_HOME/common/lib, or 
$CATALINA_BASE/shared/lib, or anywhere if I set correctly the classpath 
in setclasspath.sh (instead of placing these jars in WEB-INF/lib as I 
did before). After that, the LookupDiscoveryManager() seems OK. I 
suspect a classloader issue, but I'm not sure. Maybe somebody on this 
list could explain this ?

But now, I'm stuck with some NoClassDefFoundError or 
ClassCastException... I think it's the "same" classloader problem. In 
fact, I don't know if it's good idea to place jars in the common 
folders. But is there any other solution to make Jini and Tomcat working 
together ? Is it possible to tell to Tomcat: "now use the Webapp 
classloader when dealing with these 3 Jini jars" ??

Thanks, Olive


Olivier Dusacq wrote:
> Hello,
> 
> I'm trying to contact a Jini lookup service (reggie) from a simple 
> servlet. I'm using Tomcat 5.5.7, Java 1.5.0_01, Jini 1.2.1 and Solaris8.
> 
> The problem is that, after the call to LookupDiscoveryManager() (see 
> source code below), the "discovered()" method is never called back.
> 
> Here is what I get in my browser after an exec :
> ********
> before LookupDiscoveryManager
> end
> ********
> 
> I have successfully run a similar code in a standalone Java app (i.e. 
> without Tomcat / servlet), and everything is OK.
> 
> In fact, I have no error message nor Exception thrown. :-( I simply 
> don't have any response from reggie.
> 
> Any help would be appreciate,
> Olive
> 
> PS: I'm new to Tomcat and Jini.
> 
> 
> 
> =====================
> == core servlet
> =====================
> 
>     protected void doGet(HttpServletRequest request,
>              HttpServletResponse response)
>          throws ServletException, IOException {
> 
>         response.setContentType("text/plain");
>         PrintWriter out = response.getWriter();
> 
>         new searchALookup(out).start();
>         try {
>             Thread.sleep(30000);
>         } catch (InterruptedException ie) {
>             out.println("InterruptedException: " + ie.getMessage());
>         }
>         out.println("end");
>         out.close();
>     }
> 
> 
> 
> ======================
> == searchALookup.java
> ======================
> 
> import java.io.*;
> import net.jini.core.discovery.LookupLocator;
> import net.jini.core.lookup.*;
> import net.jini.discovery.*;
> 
> public class searchALookup extends Thread implements DiscoveryListener {
> 
>     private LookupDiscoveryManager discover;
>     private PrintWriter sortie;
> 
>     public chercheLookup(PrintWriter out) {
>         sortie = out;
>     }
> 
>     public void run() {
>         try {
>             startServiceDiscovery();
>         } catch (IOException ioe) {
>             sortie.println("Error while connecting to service");
>         }
>     }
> 
>     public synchronized void discovered(DiscoveryEvent dev) {
>         sortie.println("--> Discovered");
>         ServiceRegistrar[] lookup = dev.getRegistrars();
>         // We may have discovered one or more lookup services
>     sortie.println(lookup.length +" lookups decouverts");
>     }
> 
>     public synchronized void discarded(DiscoveryEvent dev) {
>         sortie.println("discarded");
>     }
> 
>     private void startServiceDiscovery()
>         throws IOException {
> 
>     String[] groups = null;
>     LookupLocator[] locators = null;
> 
>     try{
>         LookupLocator locator =
>         new LookupLocator("jini://REGGIE_HOSTNAME");
>         locators = new LookupLocator[]{locator};
>         groups=DiscoveryGroupManagement.NO_GROUPS;
>     }catch(java.net.MalformedURLException e){
>         groups = new String[]{"public"};
>         sortie.println("Groups ="+groups[0]);
>     }
>     
>         // Initialize for receiving events from the lookup service
>         sortie.println("before LookupDiscoveryManager");
>     discover = new LookupDiscoveryManager(groups, locators, this);
>     }
> }
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org