Hi, I extended again the example with the DFKI Server API design (see ServerExampleDFKI.java): Context context = Kiara.createContext(); Service service = context.newService(); Servant servant = new CalculatorServantExample(); service.register(servant); // Create server without negotiation Server server = context.newServer(); // Add service waiting on TCP with CDR serialization server.addService("tcp://0.0.0.0:8080", "cdr", service); server.addService("tcp://0.0.0.0:9090", "cdr", service); server.run(); The only difference to our proposal (v0.3) is that context provides newServer() method without arguments. Server created in such a way will run no negotiation service waiting on http, thus negotiation is disabled and you need to know on which host and port which protocol/transport combination is running. Also in my example I run the same service on two ports simultaneously. Best, Dmitri On 10/01/14 14:13, Dmitri Rubinstein wrote: > Hi, > > I modified your code to show the DFKI approach. Currently it is just for > the client, quick and dirty. Our application example is pretty like > yours just we start with this (see ClientExampleDFKI.java): > > Context context = Kiara.createContext(); > Connection connection = context.openConnection("tcp://127.0.0.1:8080"); > Calculator proxy = connection.getServiceInterface(Calculator.class); > > The magic is in getServiceInterface: > > public <T> T getServiceInterface(Class<T> interfaceClass) throws > Exception { > String proxyClassName = interfaceClass.getName()+"Proxy"; > Class<?> proxyClass = Class.forName(proxyClassName); > if (!interfaceClass.isAssignableFrom(proxyClass)) > throw new RuntimeException("Proxy class "+proxyClass+" does not > implement interface "+interfaceClass); > Constructor<?> proxyConstr = > proxyClass.getConstructor(Serializer.class, ProxyTransport.class); > proxyConstr.setAccessible(true); > return interfaceClass.cast(proxyConstr.newInstance(serializer, > transport)); > } > > So mostly our API is just a higher abstraction level. > > Since I am not familiar with Ant and Eclipse is not automatically > imports it I recreated project with Maven. Maven is also the de facto > standard for Java and is directly supported by main IDEs (Eclipse, > NetBeans, IntelliJ). You need to install Maven and then run "mvn > install" in kiara_java_mod directory to build everything. "mvn clean" > will do a cleanup. Archive also includes Eclipse project and .git > repository so you can track my changes. Shell scripts for running > example are included as well. > > Best, > > Dmitri > > On 10/01/14 11:31, Ricardo Gonzalez Moreno wrote: >> Hi all, >> >> As it was proposed, yesterday I wrote an example. It is fully functional >> and contains a client and a server that implement the following IDL: >> >> *service* Calculator >> { >> long add(long param1, long param2); >> >> long subtract(long param1, long param2); >> }; >> >> >> This example shows a possible future API, although the naming is not >> final. I tried to make it simple and user-friendly. This API is very >> easy to implement, and I developed a complete working example within one >> day. >> >> To develop a client application, the user should select the network >> transport and the serialization mechanism. Then he has to create the >> proxy to connect to the remote service. >> >> /// Create custom transport, serializer and the proxy./ >> ProxyTransport transport = *new *TCPProxyTransport("127.0.0.1",8080); >> Serializer ser = *new *Cdr(); >> CalculatorProxy *proxy*= *new *CalculatorProxy(ser, transport); >> >> >> After these steps, he can call the remote methods. >> >> >> /// Call 'add' method./ >> ret = *proxy*.add(param1, param2); >> >> >> To develop a server application, the user should select the network >> transport and the serialization mechanism. Then he has to invoke a >> server instance. >> >> ServerTransport transport = *new* TCPServerTransport(8080); >> Serializer serializer = *new* Cdr(); >> Server server = *new* Server(serializer, transport); >> >> >> After these steps, he can add his servants and run the server. >> >> Servant *servant* = *new* CalculatorServantExample(); >> server.addService(*servant*); >> server.serve(); >> >> >> This source code the user has to write is located in the directory >> 'user_src'. >> Also this example contains source code that should be generated by a IDL >> compiler. It is located in the folder 'gen_src'. The KIARA core source >> code is located in 'kiara_src'. You can see the code is pretty >> straightforward and just 20-30 lines of generated code do all the >> necessary tasks. >> >> This example can be compiled using 'ant', although I already provide the >> bytecode. The archive contains two bash script to execute the client >> (clientexample.sh) and the server (serverexample.sh) >> >> >> _______________________________________________ >> Miwi-middleware mailing list >> Miwi-middleware at lists.fi-ware.org >> https://lists.fi-ware.org/listinfo/miwi-middleware >> > > > _______________________________________________ > Miwi-middleware mailing list > Miwi-middleware at lists.fi-ware.org > https://lists.fi-ware.org/listinfo/miwi-middleware > -------------- next part -------------- A non-text attachment was scrubbed... Name: kiara_java_mod_2014-10-01.tar.gz Type: application/gzip Size: 57391 bytes Desc: not available URL: <https://lists.fiware.org/private/miwi-middleware/attachments/20141001/f7cc8d23/attachment.bin>
You can get more information about our cookies and privacy policies clicking on the following links: Privacy policy Cookies policy