Domino – JnpServer集成【三】——应用

来源:互联网 发布:php 数组的数组 编辑:程序博客网 时间:2024/06/12 00:32

在上一篇文章中,笔者向大家介绍了JnpServer是如何与Domino服务器集成工作的,但那是服务器端。也就是说,服务器端架设好了,还需要客户端访问才能算是一个完整的系统。那么本章就把这个问题解释清楚。

为了能调用JnpServer,代理需用java语言编写。笔者没有在Xpage中测试,这个工作可以留在今后进行验证。java代理要想访问JnpServer,最重要的是要让程序知道JnpServer在哪里,所以几个基本参数是必不可少的。

Properties props=new Properties();props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");props.setProperty("java.naming.provider.url","jnp://192.168.1.127:1099");props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");

上述代码是通过JNDI接口连接JnpServer.

sjndiname = "0001";InitialContext ctx = new InitialContext(props);dominodata = (DominoData)ctx.lookup(sjndiname);

如果编写过j2ee程序的读者应该能看懂上面这段代码的作用,根据给出的JNDI Name,取得注册到此name的对象。笔者在这里自己定义了一个DominoData的类,并将文档数据以这个对象的形式存入JnpServer中。

此DominoData类必须引用java.io.Serializable这个接口,并实现readObject()和writeObject()两个方法,才能存取数据。先从JnpServer存入数据,再通过代理这样的客户端程序读出数据,这样就形成了一个完整的过程。那么肯定会有人问,你弄这些有什么用?其实它就是个工具,怎么去用,就靠发挥个人想象力。

到此为止,还都只是试验性质的代码,要想实际应用还要过了性能这一关,才能算是有点实际意义。下一章,性能篇,敬请期待。

import java.util.Hashtable;import java.util.Properties;import javax.naming.*;import javax.sql.*;import com.dominojnp.base.*;import lotus.domino.*;public class calldominodata extends AgentBase {                public void NotesMain() {        Session session = null;        AgentContext agentContext = null;                try {                        session = getSession();                        agentContext = session.getAgentContext();                        String sjndiname = null;                        DominoData dominodata = null;                        System.out.println("Starting...");                        Properties props=new Properties();                  props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");                  props.setProperty("java.naming.provider.url","jnp://192.168.1.185:1099");                  props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");                        // (Your code goes here)                        sjndiname = "0001";                        System.out.println("jndiname=" + sjndiname);                                                System.out.println("Start:" + System.currentTimeMillis());                        InitialContext ctx = new InitialContext(props);                        dominodata = (DominoData)ctx.lookup(sjndiname);                        System.out.println("End:" + System.currentTimeMillis());                        System.out.println("dataid:" + dominodata.getDataid());                        System.out.println("field1:" + dominodata.getField1());                        System.out.println("field2:" + dominodata.getField2());                        System.out.println("field3:" + dominodata.getField3());                        System.out.println("field4:" + dominodata.getField4());                        System.out.println("field5:" + dominodata.getField5());                        System.out.println("field6:" + dominodata.getField6());                } catch (Exception e) {                        e.printStackTrace();                } finally {                        try{                                if (agentContext != null) {                                        agentContext.recycle();                                }                                if(session != null){                                        session.recycle();                                }                        }catch(Exception e){                                                        }                                        }        }}


package com.dominojnp.base;import java.io.IOException;import java.util.HashMap;//Domino 文档映射为POJO对象public class DominoData implements java.io.Serializable{        /**         *          */        private static final long serialVersionUID = 1L;        String dataid = "";        String field1 = "";        String field2 = "";        String field3 = "";        String field4 = "";        String field5 = "";        String field6 = "";        public String getDataid() {                return dataid;        }        public void setDataid(String dataid) {                this.dataid = dataid;        }        public String getField1() {                return field1;        }        public void setField1(String field1) {                this.field1 = field1;        }        public String getField2() {                return field2;        }        public void setField2(String field2) {                this.field2 = field2;        }        public String getField3() {                return field3;        }        public void setField3(String field3) {                this.field3 = field3;        }        public String getField4() {                return field4;        }        public void setField4(String field4) {                this.field4 = field4;        }        public String getField5() {                return field5;        }        public void setField5(String field5) {                this.field5 = field5;        }        public String getField6() {                return field6;        }        public void setField6(String field6) {                this.field6 = field6;        }                private void writeObject(java.io.ObjectOutputStream out) throws IOException{                out.writeObject(dataid);                out.writeObject(field1);                out.writeObject(field2);                out.writeObject(field3);                out.writeObject(field4);                out.writeObject(field5);                out.writeObject(field6);        }        private void readObject(java.io.ObjectInputStream in) throws IOException,ClassNotFoundException {                dataid = (String)in.readObject();                field1 = (String)in.readObject();                field2 = (String)in.readObject();                field3 = (String)in.readObject();                field4 = (String)in.readObject();                field5 = (String)in.readObject();                field6 = (String)in.readObject();        }        public String getValue(){                return dataid;        }        }


0 0