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