Dear rcbandit2, I think it is unreasonable to ask the members of this list to write your homework for you. I advise you to contact your tutor and tell them that you are having difficulties with the assignment.
Kind regards, Neil On Saturday, 11 February 2012 at 14:21, rcbandit2 wrote: > > This the complete source code: > http://www.2shared.com/file/jnGjnZjZ/CB_27.html > How I must edit the code in order to work? > I'm new to java. > > > > Christian Schneider wrote: > > > > I see one error in your Activator. > > > > You should store the ServiceRegistration that you get from > > registerService in a variable of the activator. > > In the stop method you should then call unregister on the > > ServiceRegistration. The call to ungetService is not suitable for the > > serviceprovider but only > > for the consumer. > > > > This is not the problem you observe though. I assume that one of the > > "new" calls to either CBridgeImpl or EchoService does not return. The > > activator is called synchronously by > > the OSGi framework. It is very important that it does not "hang" or > > consume too much time as this will affect the whole framework. Can you > > also post the content of these classes? > > > > The other question is if you need to register an OSGi service at all. If > > you only want to open a network port then you can just do this from the > > start method. OSGi services only make sense if there is also a consumer > > of the service inside the OSGi framework. > > > > Christian > > > > > > Am 11.02.2012 10:57, schrieb rcbandit2: > > > I register the Java network server as service. When I try to deploy the > > > OSGI > > > bundle with the java server Glassfish freezes. But I can successfully > > > make a > > > connection with the java network client. It seems that when I try to > > > deploy > > > the OSGI bundle there is a infinite loop. How I can solve the problem? > > > This > > > is the code of the Activator: > > > > > > package org.DX_57.osgi.CB_27.impl; > > > > > > import java.util.Properties; > > > import org.DX_57.osgi.CB_27.api.CBridge; > > > import org.osgi.framework.BundleActivator; > > > import org.osgi.framework.BundleContext; > > > > > > > > > > > > > > > public class CBridgeApp implements BundleActivator { > > > > > > public void start(BundleContext bc) throws Exception { > > > bc.registerService(CBridge.class.getName(), new CBridgeImpl(), > > > new > > > Properties()); > > > bc.registerService(EchoServer.class.getName(), new EchoServer(), > > > new > > > Properties()); > > > > > > > > > > > > } > > > > > > public void stop(BundleContext bc) throws Exception { > > > > > > bc.ungetService(bc.getServiceReference(CBridge.class.getName())); > > > } > > > } > > > > > > > > > > > > > > > > > > > > > rcbandit2 wrote: > > > > This is my simple example of OSGI bundle: > > > > http://www.2shared.com/file/h6lFjppY/CB_27.html > > > > Where I have to put the source code of the java network server in order > > > > to > > > > work? > > > > > > > > > > > > > > > > nfndx wrote: > > > > > It does not seem like you need your network server to be a osgi > > > > > service. > > > > > So > > > > > if you just need your network server to be started then create a osgi > > > > > bundle. Also create an activator for this bundle( remember to set this > > > > > activator in the manifest) . In the start method if the activator you > > > > > should be able to start your network server > > > > > > > > > > Hope that helps > > > > > Regards > > > > > Ivanhoe > > > > > On Feb 10, 2012 5:32 PM, "rcbandit2"<[email protected] > > > > > (mailto:[email protected])> wrote: > > > > > > > > > > > Any ideas or reply? > > > > > > > > > > > > > > > > > > > > > > > > rcbandit2 wrote: > > > > > > > Hi, > > > > > > > > > > > > > > I created this Java network server: > > > > > > > > > > > > > > import java.net (http://java.net).*; > > > > > > > import java.io (http://java.io).*; > > > > > > > > > > > > > > public class EchoServer > > > > > > > { > > > > > > > ServerSocket m_ServerSocket; > > > > > > > > > > > > > > public EchoServer() > > > > > > > { > > > > > > > try > > > > > > > { > > > > > > > // Create the server socket. > > > > > > > m_ServerSocket = new ServerSocket(12111); > > > > > > > } > > > > > > > catch(IOException ioe) > > > > > > > { > > > > > > > System.out.println("Could not create server socket at 12111. > > > > > > > > > > > > > > > > > > Quitting."); > > > > > > > System.exit(-1); > > > > > > > } > > > > > > > > > > > > > > System.out.println("Listening for clients on 12111..."); > > > > > > > > > > > > > > // Successfully created Server Socket. Now wait for connections. > > > > > > > int id = 0; > > > > > > > while(true) > > > > > > > { > > > > > > > try > > > > > > > { > > > > > > > // Accept incoming connections. > > > > > > > Socket clientSocket = m_ServerSocket.accept(); > > > > > > > > > > > > > > ClientServiceThread cliThread = new > > > > > > > ClientServiceThread(clientSocket, > > > > > > > id++); > > > > > > > cliThread.start(); > > > > > > > } > > > > > > > catch(IOException ioe) > > > > > > > { > > > > > > > System.out.println("Exception encountered on accept. Ignoring. > > > > > > > Stack > > > > > > > > > > > > > > > > > > Trace > > > > > > > :"); > > > > > > > ioe.printStackTrace(); > > > > > > > } > > > > > > > } > > > > > > > } > > > > > > > > > > > > > > public static void main (String[] args) > > > > > > > { > > > > > > > new EchoServer(); > > > > > > > } > > > > > > > > > > > > > > class ClientServiceThread extends Thread > > > > > > > { > > > > > > > Socket m_clientSocket; > > > > > > > int m_clientID = -1; > > > > > > > boolean m_bRunThread = true; > > > > > > > > > > > > > > ClientServiceThread(Socket s, int clientID) > > > > > > > { > > > > > > > m_clientSocket = s; > > > > > > > m_clientID = clientID; > > > > > > > } > > > > > > > > > > > > > > public void run() > > > > > > > { > > > > > > > // Obtain the input stream and the output stream for the socket > > > > > > > // A good practice is to encapsulate them with a BufferedReader > > > > > > > // and a PrintWriter as shown below. > > > > > > > BufferedReader in = null; > > > > > > > PrintWriter out = null; > > > > > > > > > > > > > > // Print out details of this connection > > > > > > > System.out.println("Accepted Client : ID - " + m_clientID + " : > > > > > > > > > > > > > > > > > > Address - > > > > > > > " + > > > > > > > m_clientSocket.getInetAddress().getHostName()); > > > > > > > > > > > > > > try > > > > > > > { > > > > > > > in = new BufferedReader(new > > > > > > > InputStreamReader(m_clientSocket.getInputStream())); > > > > > > > out = new PrintWriter(new > > > > > > > OutputStreamWriter(m_clientSocket.getOutputStream())); > > > > > > > > > > > > > > // At this point, we can read for input and reply with appropriate > > > > > > output. > > > > > > > // Run in a loop until m_bRunThread is set to false > > > > > > > while(m_bRunThread) > > > > > > > { > > > > > > > // read incoming stream > > > > > > > String clientCommand = in.readLine(); > > > > > > > > > > > > > > System.out.println("Client Says :" + clientCommand); > > > > > > > > > > > > > > if(clientCommand.equalsIgnoreCase("quit")) > > > > > > > { > > > > > > > // Special command. Quit this thread > > > > > > > m_bRunThread = false; > > > > > > > System.out.print("Stopping client thread for client : " + > > > > > > > m_clientID); > > > > > > > } > > > > > > > else > > > > > > > { > > > > > > > // Echo it back to the client. > > > > > > > out.println(clientCommand); > > > > > > > out.flush(); > > > > > > > } > > > > > > > } > > > > > > > } > > > > > > > catch(Exception e) > > > > > > > { > > > > > > > e.printStackTrace(); > > > > > > > } > > > > > > > finally > > > > > > > { > > > > > > > // Clean up > > > > > > > try > > > > > > > { > > > > > > > in.close(); > > > > > > > out.close(); > > > > > > > m_clientSocket.close(); > > > > > > > System.out.println("...Stopped"); > > > > > > > } > > > > > > > catch(IOException ioe) > > > > > > > { > > > > > > > ioe.printStackTrace(); > > > > > > > } > > > > > > > } > > > > > > > } > > > > > > > } > > > > > > > } > > > > > > > > > > > > > > I want to insert this code into OSGI bundle. At the moment I don't > > > > > > have > > > > > > > configured Glassfish with datasource to test the bundle. What I > > > > > > > have > > > > > > > > > > > > > > > > > > to > > > > > > do > > > > > > > in order to configure the Java server to listen for incomming > > > > > > > > > > > > > > > > > > connections > > > > > > > when I deploy it on Glassfish server? > > > > > > > > > > > > > > Do I need to add somenthing into the OSGI bundle activator to make > > > > > > > the > > > > > > > Java server listen for incomming connections? > > > > > > > > > > > > > > Best Wishes > > > > > > -- > > > > > > View this message in context: > > > > > > http://old.nabble.com/How-to-add-Java-network-server-into-OSGI-bundle-tp33295152p33301156.html > > > > > > Sent from the Apache Felix - Users mailing list archive at > > > > > > Nabble.com (http://Nabble.com). > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > To unsubscribe, e-mail: [email protected] > > > > > > (mailto:[email protected]) > > > > > > For additional commands, e-mail: [email protected] > > > > > > (mailto:[email protected]) > > > > > > > > > > > > > > > > > > > > > > -- > > Christian Schneider > > http://www.liquid-reality.de > > > > Open Source Architect > > Talend Application Integration Division http://www.talend.com > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > (mailto:[email protected]) > > For additional commands, e-mail: [email protected] > > (mailto:[email protected]) > > > > -- > View this message in context: > http://old.nabble.com/How-to-add-Java-network-server-into-OSGI-bundle-tp33295152p33306304.html > Sent from the Apache Felix - Users mailing list archive at Nabble.com > (http://Nabble.com). > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > (mailto:[email protected]) > For additional commands, e-mail: [email protected] > (mailto:[email protected]) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

