- Szerezzük be a CoolRMI legfrissebb verzióját.
- Indítsuk el az OSGi konténert.
- Installáljuk majd indítsuk el a CoolRMI-t az OSGi konténerben.
Valami ilyesmit kell látnunk:
osgi> ss Framework is launched. id State Bundle 0 ACTIVE org.eclipse.osgi_3.6.0.v20100517 2 ACTIVE com.rizsi.coolrmi_1.1.0
- Hozzunk létre egy "Plug-in Project"-et az Eclipsben CoolRMI néven, majd a letöltött jar-ból a MANIFEST.MF-et és a forrás-fájlokat másoljuk a projektbe, végül pedig frissítsük a projektet. (nekem a MANIFEST.MF állományba az alábbi sort fel kellett venni: Import-Package: org.osgi.framework;version="1.3.0")
- Nyissuk meg az előzőekben service néven futó projektünket, és a MANIFEST.MF állomány Import-Package szekcióját bővítsük a CoolRMI exportjaival.
- Szerver oldalon a a szolgáltatás regisztrációjában van némi különbség. Jelen esetben nem az OSGi konténerbe kell regisztrálnunk a szolgáltatást, hanem a CoolRMI kontextusába, ezért az Activator.start metódusunkat az alábbira kell alakítani:
InetSocketAddress addr = new InetSocketAddress(9001); CoolRMIServer server = new CoolRMIServer(Activator.class.getClassLoader(), addr, true); //Register a service on the id: "service" //This id an be used client side to find the service on this server. server.getServiceRegistry().addService(new CoolRMIService("service", SimpleService.class, new SimpleServiceImpl())); server.start(); System.out.println("CoolRMI Service started.");
- Fordítsuk és telepítsük a szolgáltatást.
- Hozzunk létre egy "Java Project"-et, és importáljuk be az imént letöltött jar-t.
- Tegyük elérhetővé a service.SimpleService interfészt, hogy a kliens programunk tudja milyen metódusokat tud meghívni.
- A kliens osztály kódja az alábbi:
import java.net.InetSocketAddress; import service.SimpleService; import com.rizsi.coolrmi.CoolRMIClient; import com.rizsi.coolrmi.ICoolRMIProxy; public class Caller { public static void main(String[] args) throws Exception { // Create a client that connects to the server on the specified address. CoolRMIClient client = new CoolRMIClient( Caller.class.getClassLoader(), new InetSocketAddress("localhost", 9001), true); try { // Get a proxy for the remote service object // To access the remote object the remote interface // and the service Id must be known ICoolRMIProxy remoteService = client.getService(SimpleService.class, "service"); try { SimpleService service = (SimpleService) remoteService; service.echo("CoolRMI calling."); } finally { remoteService.disposeProxy(); } } finally { client.close(); } } }
- Futtassuk a klienset, és ellenőrizzük a kimenetet az OSGi konzolon.
osgi> CoolRMI calling.
2010. július 30., péntek
OSGi távoli kapcsolódás CoolRMI segítségével
Az előző bejegyzésben láthattuk miként készíthetünk OSGi keret-rendszer alá szolgáltatást, és hogyan kapcsolódhatunk ehhez a szolgáltatáshoz a keret-rendszeren belül. A mostani írás célja, hogy segédletet nyújtson távoli kapcsolat kialakítására, hiszen elengedhetetlen, hogy az OSGi konténeren kívül eső kód is használni tudja a szolgáltatásokat. Választásom a CoolRMI nevű eszközre esett, egyrészt mert magyar fejlesztés, és nyílt-forráskóddal lett publikálva, másrészt mert a környezetem ezt használja, és kipróbált alkalmazás-komponensnek minősült. A CoolRMI két részből tevődik össze. Az egyik fele az OSGi konténerben fut mint szolgáltatás, és várja a beérkező kéréseket, a másik fele pedig az alkalmazásunkban a kapcsolódásért felel.
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése