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

14 篇文章 0 订阅
14 篇文章 0 订阅

在上一篇文章中,笔者向大家介绍了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;
        }
        
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值