ようやくSun RPC実装コードをお披露目できるようになりました。
nio-jrpc
Java NIO based OncRpc library
http://code.google.com/p/nio-jrpc/
利用方法は2通りあります。
まず、直接使う方法。
final ProtocolFilter protocolKeeper = new ProtocolKeeperFilter(); final ProtocolFilter rpcFilter = new RpcParserProtocolFilter(); final ProtocolFilter rpcProcessor = new RpcProtocolFilter(); final ProtocolFilter rpcDispatcher = new RpcDispatcher(_programs); final ProtocolChain protocolChain = new DefaultProtocolChain(); protocolChain.addFilter(protocolKeeper); protocolChain.addFilter(rpcFilter); protocolChain.addFilter(rpcProcessor); // use GSS if configures if (_gssSessionManager != null ) { final ProtocolFilter gssManager = new GssProtocolFilter(_gssSessionManager); protocolChain.addFilter(gssManager); } protocolChain.addFilter(rpcDispatcher);
もしくは、helperクラスを使う方法。
final int PORT = 1717; final int PROG_NUMBER = 100017; final int PROG_VERS = 1; RpcDispatchable dummy = new RpcDispatchable() { @Override public void dispatchOncRpcCall(RpcCall call) throws OncRpcException, IOException { call.reply(XdrVoid.XDR_VOID); } }; OncRpcSvc service = new OncRpcSvc(PORT); service.register(new OncRpcProgram(PROG_NUMBER, PROG_VERS), dummy); service.start();
このコードではI/O NFS実装を使っています。2009年9月から実運用しており、秒間12000件のリクエストを捌いています。
原文はこちら。
http://blogs.oracle.com/oleksiys/entry/grizzly_based_sun_rpc_server
0 件のコメント:
コメントを投稿