Hi,

(1) The content of serviceDesc.config.


    import net.jini.core.discovery.LookupLocator;
   import net.jini.discovery.LookupDiscovery;
   import net.jini.core.entry.Entry;
   import java.io.File;
   import com.sun.jini.config.ConfigUtil;

   ServiceDescription
   {
       localhost = ConfigUtil.getHostName();
       port = "8080";
       directory = "/classes";
       file = "ServiceDescription-dl.jar";
codebase = ConfigUtil.concat(new String[] { "http://";, localhost, ":", port, directory, "/", file } ); // codebase = "http://192.168.1.13:8080/classes/starter.ServiceDescription-dl.jar";;

       policy = "policy.all";
       classpath = "ServiceDescription-start.jar";
       implClass = "starter.FileClassifierStarterImpl";
serverConfigArgs = new String[] {"file_classifier_server.config"};
   }


   AdvertDescription
   {
       entries = new Entry[] {};
       groups = LookupDiscovery.ALL_GROUPS;
       unicastLocators = new LookupLocator[] { // empty };

   serviceIdFile = new File("serviceId.id");
   }


(2) file_classifier_server.config

   import net.jini.jeri.BasicILFactory;
   import net.jini.jeri.BasicJeriExporter;
   import net.jini.jeri.tcp.TcpServerEndpoint;

   FileClassifierServer
   {
exporter = new BasicJeriExporter(TcpServerEndpoint.getInstance(0), new BasicILFactory());
   }

Best regards,
Alina.



On Thursday 19/01/2012 at 10:55:50, Tom Hobbs  wrote:
Can you include the contents of your services config files, if any, please?

Both services should be able to run quite happily on the same server. The port in use error can, off the top of my head, either be the HTTP port or the port that River uses for discovery (reggies port). So the first thing I would look for would be to make sure you're not accidentally attempting
to start a second HTTP service.

Sent via mobile device, please forgive typos and spacing errors.

On 18 Jan 2012 19:50, "Girbea Alina" <[email protected]> wrote:


Hi,

I'm working on my very first jini application and I want to develop a
"fat" service (where the work is done on the server and the client uses a
proxy).
Hence, I want to setup a nonactivatable jini service (the implementation
must be Remote and must be able to create a proxy) as described in Jan
Newmarch's book in chapter 21 using the ServiceDescription interface.

These are the steps that I followed:
1) Start Jini HttpServer:
D:\jini\apache-river-2.2.0\**lib>java -jar tools.jar -port 8080 -dir
D:\jini\apache-river-2.2.0\**lib-dl

   and I have obtained the following message:
     Jan 16, 2012 10:11:28 PM com.sun.jini.tool.ClassServer run
INFO: ClassServer started [[D:\jini\apache-river-2.2.0\**lib-dl\], port
8080]

2) Start Reggie service using the following instruction (I'm using reggie
because I want to register my service with the reggie lookup service):

     D:\>java  -Djava.security.policy=D:\**policy.all -jar
D:\jini\apache-river-2.2.0\**lib\start.jar D:\start-transient-reggie.**
config

   and I have obtained the following message:
Jan 16, 2012 10:23:12 PM com.sun.jini.reggie.**RegistrarImpl init
     INFO: started Reggie: c704a7fa-0540-46a4-93b1-**a321bc8c50a8, [],
ConstrainableLookupLocator[[**jini://pc-nume/], [null]]

   (2.1)Where the start-transient-reggie.config looks as follows:

     import com.sun.jini.start.**ServiceDescriptor;
     import com.sun.jini.start.**NonActivatableServiceDescripto**r;
     import com.sun.jini.config.**ConfigUtil;

     com.sun.jini.start {

           private static codebase = ConfigUtil.concat(new Object[] {
                               "http://";,
                               "localhost",
":8080/reggie-dl.jar"+" http://","localhost",":8080/**
jsk-dl.jar"
                               }
                                     );

             private static policy = "D:\\policy.all";
     private static classpath = "D:\\jini\\apache-river-2.2.0\**
\lib\\reggie.jar";
     private static config = "D:\\transient-reggie.config";
     static serviceDescriptors = new ServiceDescriptor[] {new
NonActivatableServiceDescripto**r(
codebase, policy, classpath, "com.sun.jini.reggie.
**TransientRegistrarImpl",new String[] { config }) };
     }


   (2.2)transient-reggie.config

     com.sun.jini.reggie {
                     initialMemberGroups = new String[] {} }


3) Afterwards I have developed the service and I have created the jar
"ServiceDescription-dl.jar", which I have put at D:\jini\apache-river-2.2.0\ **lib-dl\classes where the http server is started and which contains the
classes needed by the client.
The thing is that if reggie is started then I get the following error
message:

java.net.BindException: Address already in use: Cannot bind
     at java.net.**PlainDatagramSocketImpl.bind0(**Native Method)
     at java.net.**PlainDatagramSocketImpl.bind(**Unknown Source)
     at java.net.DatagramSocket.bind(**Unknown Source)
     at java.net.MulticastSocket.<**init>(Unknown Source)
     at java.net.MulticastSocket.<**init>(Unknown Source)
at net.jini.discovery.**LookupDiscovery$**AnnouncementListener.<init>(**
LookupDiscovery.java:1030)
     at net.jini.discovery.**LookupDiscovery$7.run(**
LookupDiscovery.java:3091)
     at java.security.**AccessController.doPrivileged(**Native Method)
     at net.jini.security.Security$5.**run(Security.java:543)
     at java.security.**AccessController.doPrivileged(**Native Method)
     at net.jini.security.Security.**doPrivileged(Security.java:**540)
     at net.jini.discovery.**LookupDiscovery.**beginDiscovery(**
LookupDiscovery.java:3089)
     at net.jini.discovery.**LookupDiscovery.<init>(**
LookupDiscovery.java:1946)
at net.jini.discovery.**LookupDiscoveryManager.**beginDiscovery(**
LookupDiscoveryManager.java:**1549)
     at net.jini.discovery.**LookupDiscoveryManager.<init>(**
LookupDiscoveryManager.java:**902)
     at starter.ServiceDescription.**advertiseService(**
ServiceDescription.java:160)
at starter.ServiceDescription.<**init>(ServiceDescription.java:**76) at starter.ServiceDescription.**main(ServiceDescription.java:**36)

If reggie is not started, then I get no error and the service works.

Otherwise, if I try to start reggie after my service is started I get a
similar error.

Jan 18, 2012 6:48:13 PM com.sun.jini.reggie.**RegistrarImpl <init>
SEVERE: Reggie initialization failed
java.net.BindException: Address already in use: Cannot bind
at java.net.**PlainDatagramSocketImpl.bind0(**Native Method) at java.net.**PlainDatagramSocketImpl.bind(**Unknown Source)
             at java.net.DatagramSocket.bind(**Unknown Source)
             at java.net.MulticastSocket.<**init>(Unknown Source)
             at java.net.MulticastSocket.<**init>(Unknown Source)
             at net.jini.discovery.**LookupDiscovery$**
AnnouncementListener.<init>(**Lookup
Discovery.java:1030)
             at net.jini.discovery.**LookupDiscovery$7.run(**
LookupDiscovery.java:3091)
at java.security.**AccessController.doPrivileged(**Native Method)
             at net.jini.security.Security$5.**run(Security.java:543)
at java.security.**AccessController.doPrivileged(**Native Method) at net.jini.security.Security.**doPrivileged(Security.java:**540) at net.jini.discovery.**LookupDiscovery.**beginDiscovery(**
LookupDiscovery.jav
a:3089)
             at net.jini.discovery.**LookupDiscovery.<init>(**
LookupDiscovery.java:1946)
             at net.jini.discovery.**LookupDiscoveryManager.**
beginDiscovery(LookupDiscov
eryManager.java:1549)
             at net.jini.discovery.**LookupDiscoveryManager.<init>(**
LookupDiscoveryManag
er.java:966)
             at com.sun.jini.reggie.**RegistrarImpl.init(**
RegistrarImpl.java:4557)
             at com.sun.jini.reggie.**RegistrarImpl.access$000(**
RegistrarImpl.java:143)
             at com.sun.jini.reggie.**RegistrarImpl$1.run(**
RegistrarImpl.java:448)
             at com.sun.jini.reggie.**RegistrarImpl.loginAndRun(**
RegistrarImpl.java:461)

             at com.sun.jini.reggie.**RegistrarImpl.<init>(**
RegistrarImpl.java:396)
             at com.sun.jini.reggie.**TransientRegistrarImpl.<init>(**
TransientRegistrarI
mpl.java:39)
at sun.reflect.**NativeConstructorAccessorImpl.**newInstance0(Native
Method)

at sun.reflect.**NativeConstructorAccessorImpl.**newInstance(Unknown
Source)

at sun.reflect.**DelegatingConstructorAccessorI**mpl.newInstance(Unknown
Sou
rce)
at java.lang.reflect.Constructor.**newInstance(Unknown Source)
             at com.sun.jini.start.**NonActivatableServiceDescripto**
r.create(NonActivata
bleServiceDescriptor.java:674)
             at com.sun.jini.start.**ServiceStarter.create(**
ServiceStarter.java:287)
at com.sun.jini.start.**ServiceStarter.**processServiceDescriptors(*
*ServiceSt
arter.java:445)
             at com.sun.jini.start.**ServiceStarter.main(**
ServiceStarter.java:476)
Jan 18, 2012 6:48:13 PM com.sun.jini.start.**ServiceStarter
checkResultFailures
WARNING: Exception creating service.
java.lang.reflect.**InvocationTargetException
at sun.reflect.**NativeConstructorAccessorImpl.**newInstance0(Native
Method)

at sun.reflect.**NativeConstructorAccessorImpl.**newInstance(Unknown
Source)

at sun.reflect.**DelegatingConstructorAccessorI**mpl.newInstance(Unknown
Sou
rce)
at java.lang.reflect.Constructor.**newInstance(Unknown Source)
             at com.sun.jini.start.**NonActivatableServiceDescripto**
r.create(NonActivata
bleServiceDescriptor.java:674)
             at com.sun.jini.start.**ServiceStarter.create(**
ServiceStarter.java:287)
at com.sun.jini.start.**ServiceStarter.**processServiceDescriptors(*
*ServiceSt
arter.java:445)
             at com.sun.jini.start.**ServiceStarter.main(**
ServiceStarter.java:476)
Caused by: java.net.BindException: Address already in use: Cannot bind
at java.net.**PlainDatagramSocketImpl.bind0(**Native Method) at java.net.**PlainDatagramSocketImpl.bind(**Unknown Source)
             at java.net.DatagramSocket.bind(**Unknown Source)
             at java.net.MulticastSocket.<**init>(Unknown Source)
             at java.net.MulticastSocket.<**init>(Unknown Source)
             at net.jini.discovery.**LookupDiscovery$**
AnnouncementListener.<init>(**Lookup
Discovery.java:1030)
             at net.jini.discovery.**LookupDiscovery$7.run(**
LookupDiscovery.java:3091)
at java.security.**AccessController.doPrivileged(**Native Method)
             at net.jini.security.Security$5.**run(Security.java:543)
at java.security.**AccessController.doPrivileged(**Native Method) at net.jini.security.Security.**doPrivileged(Security.java:**540) at net.jini.discovery.**LookupDiscovery.**beginDiscovery(**
LookupDiscovery.jav
a:3089)
             at net.jini.discovery.**LookupDiscovery.<init>(**
LookupDiscovery.java:1946)
             at net.jini.discovery.**LookupDiscoveryManager.**
beginDiscovery(LookupDiscov
eryManager.java:1549)
             at net.jini.discovery.**LookupDiscoveryManager.<init>(**
LookupDiscoveryManag
er.java:966)
             at com.sun.jini.reggie.**RegistrarImpl.init(**
RegistrarImpl.java:4557)
             at com.sun.jini.reggie.**RegistrarImpl.access$000(**
RegistrarImpl.java:143)
             at com.sun.jini.reggie.**RegistrarImpl$1.run(**
RegistrarImpl.java:448)
             at com.sun.jini.reggie.**RegistrarImpl.loginAndRun(**
RegistrarImpl.java:461)

             at com.sun.jini.reggie.**RegistrarImpl.<init>(**
RegistrarImpl.java:396)
             at com.sun.jini.reggie.**TransientRegistrarImpl.<init>(**
TransientRegistrarI
mpl.java:39)
             ... 8 more
Jan 18, 2012 6:48:13 PM com.sun.jini.start.**ServiceStarter
checkResultFailures
WARNING: Associated service descriptor [0]: [http://localhost:8080/reggie-
**dl.jar <http://localhost:8080/reggie-dl.jar>
http://localhost:8080/jsk-dl.**jar <http://localhost:8080/jsk-dl.jar>,
D:\policy.all, D:\jini\apache-river-2.2.0\lib
\reggie.jar, com.sun.jini.reggie.**TransientRegistrarImpl, [D:\
transient-reggie.co
nfig], com.sun.jini.start.**NonActivatableServiceDescripto**r$1@a470b8,
BasicProxyPr
eparer[]]



     Shouldn't both services be able to run on the same server?
What have I done wrong?? I really dont't have any clue, I think I got
the concept wrong somewhere!

   Best regards!
   Alina







Reply via email to