UCM (Oracle Content Server)安装及CIS应用(FOR J2EE)

一、下载

       UCM:http://www.oracle.com/technology/software/products/content-management/index.html

        下载:Oracle Content Server 10g

       CIS:http://download.oracle.com/otn/content_management/ContentIntegrationSuite_10gR3_20081218.zip


二、安装(具体步骤见附件——安装.doc)

1.       运行 \UCM\ContentServer\win32\Installer.exe ,开始进行安装。  

2.       配置安装环境,选择简体中文和新服务器,如下图  

3.       继续选择服务安装目录及 JDK 配置,如下  

4.       继续默认选择配置为主服务并安装管理服务器,如下  

5.       选择内容服务器区域为简体中文,并设置时区为系统默认。  

6.       设置端口号及 IP 过滤,此处为可以访问的 IP  

7.       设置一些杂项  

8.       配置服务器和数据库  

服务器选择 Apache ,数据库选择 SqlServer2005

9.       安装所有组件,输入“ 1,2,3,4,5,F  

10.   配置管理服务器和内容服务器,均选择安装并自动启动,不使用特定身份,不依赖其他服务。

11.   以上所有配置结束,系统会检查配置项,  

所有配置如下:

审核安装设置。 . .

Content Server 核心文件夹 : e:/oracle/ucm/server

Java 虚拟机 : Sun Java 1.5.0_11 JDK

Content Server 本机 Vault 文件夹 : e:/oracle/ucm/server/vault/

Content Server Weblayout 文件夹 : e:/oracle/ucm/server/weblayout/

通过另一个服务器来代理身份验证功能 : no

安装管理服务器 : yes

Web 浏览器路径 : c:/program files/internet explorer/iexplore.exe

内容服务器系统区域设置 : Chinese-Simplified

内容服务器端口 : 4444

管理服务器端口 : 4440

传入连接地址过滤器 : 127.0.0.1|192.168.*.*

Web 服务器的相对根 : /idc/

公司邮件服务器 : mail

管理员电子邮件地址 : sysadmin@mail

Web 服务器 HTTP 地址 : 127.0.0.1

Content Server 实例名 : idc

Content Server 实例标签 : idc

Content Server 说明 : 内容服务器 idc

Web 服务器 : Apache

内容服务器数据库 : Microsoft SQL Server 2005

JDBC 驱动程序类名称 : net.sourceforge.jtds.jdbc.Driver

JDBC 连接字符串 : jdbc:jtds:sqlserver://192.168.8.18:1433;databaseName=UCM

SQL 数据库用户 : sa

SQL Database Password Encoding: Intradoc

SQL 数据库口令 : ag5WiFbZEIrT3XzaSDf4ULf6/8VClb2dygLGr3pW8Hk=

JDBC 驱动程序 jar 文件路径 :

D:\jboss-4.0.5.GA\server\default\deploy\CRM.war\WEB-INF\lib\jtds-1.2.4.jar

复制 JDBC 驱动程序文件 : true

是否尝试创建数据库表 :

使用 Unicode 文本字段 :

组件 :

ContentFolios,Folders_g,LinkManager8,OracleTextSearch,ThreadedDiscussions

配置管理服务器服务 : auto

将管理服务配置为以特定用户身份运行 : false

将管理服务配置为依赖于另一个服务 : false

配置内容服务器服务 : auto

将服务配置为以特定用户身份运行 : false

将服务配置为依赖于另一个服务 : false

12.   选择继续安装,等待安装结束。  

13.   默认安装 Apache2.2 ,配置项目如下  

打开 E:\Apache2.2\conf\httpd.conf ,在文件最下面加入:

loadModule IdcApacheAuth E:/oracle/ucm/server/shared/os/win32/lib/IdcApache22Auth.dll

IdcUserDB idctest "E:/oracle/ucm/server/data/users/userdb.txt"

Alias /idctest "E:/oracle/ucm/server/weblayout/"

<Location /idctest>

DirectoryIndex portal.htm

IdcSecurity idc

Allow from all

</Location>

 

14.   检查系统服务项


 


三、CIS的使用

1.将cis-client-8.0.0.jar导入到项目中。

2.在src下创建adapterconfig.xml,或在CIS的实例中复制一份,内容如下:


<?xml version="1.0" ?>
<config>
	<adapter default="true" name="myadapter" type="scs">
		<config>
			<property name="port">8888</property>
            <property name="host">127.0.0.1</property>
			<property name="type">socket</property>
		</config>
		<beans template="classpath:/META-INF/resources/adapter/adapter-services-scs.jxml"/>
	</adapter>
</config>


只需要修改host和post,host是安装UCM的机器IP,post是安装时选择的端口(默认是4444)

3.复制\oracle-cis-10g\samples\CodeExamples\src\java下的java文件到项目中。(oracle都给写好了,用的时候复制粘贴就OK了)

4.开始使用。


四、自写UCMUtil


由于毕竟是用例,现成的代码过于分散,所以自己写了一个工具类,只实现checkin和checkout文件,其他的可以自己添加。修改了用例中的声明,全都使用public便于外部调用。



/**
	 * 存储文件
	 * @param path 文件路径
	 * @param title 存储用标题
	 * @return 提取码
	 */
	public static String cheakinFile(String path,String title){
		CheckinFile checkin = new CheckinFile ();
			checkin.initialize ();
        try {
        	checkin.setPrimaryFile(path);
        	checkin.setTitle(title);
            checkin.connect ();
            checkin.execute ();
        } catch (CommandException e) {
            e.printStackTrace ();
        } catch (MalformedURLException e) {
            e.printStackTrace ();
        } catch (RemoteException e) {
            e.printStackTrace ();
        }
		return checkin.getContentId();
	}
	/**
	 * 取文件
	 * @param ContentId 提取码
	 * @return ICISTransferStream文件对象
	 * e.g.
	 * ICISTransferStream in;
	 * 1.获取文件名:in.getFileName();
	 * 2.获取文件2进制流:in.getInputStream();
	 * 3.存储文件:
	 * 		FileOutputStream fos = new FileOutputStream ("d:\\"+in.getFileName());
	 *		UCPMStreamUtil.copyStream (in.getInputStream(), fos, true, true);
	 * @see UCPMStreamUtil
	 */
	public static ICISTransferStream cheakoutFile(String ContentId){
		CheckoutAndSave checkout = new CheckoutAndSave ();
        checkout.initialize ();
        try {
        	checkout.setContentId(ContentId);
            checkout.connect ();
            checkout.execute ();
        } catch (CommandException e) {
            e.printStackTrace ();
        } catch (MalformedURLException e) {
            e.printStackTrace ();
        } catch (RemoteException e) {
            e.printStackTrace ();
        }
        return checkout.getGetfileResult();
	}

 

五、从朋友手里拿的通过http存取文件的方法

package com.stellent.cis.sdk.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Random;

import com.esoon.cisiss.common.PropertiesUtil;

import oracle.stellent.ridc.IdcClient;
import oracle.stellent.ridc.IdcClientException;
import oracle.stellent.ridc.IdcClientManager;
import oracle.stellent.ridc.IdcContext;
import oracle.stellent.ridc.model.DataBinder;
import oracle.stellent.ridc.protocol.ServiceResponse;

public class UCMUtil {
    private static IdcClientManager m_clientManager = null;
    private static IdcClient m_client = null;
    private static IdcContext m_context = null;
    static {
		try{
			UCMUtil.initialize(PropertiesUtil.getConfig().getProperty("UCMURL"),PropertiesUtil.getConfig().getProperty("UCMUserName"),PropertiesUtil.getConfig().getProperty("UCMPassWord"));
		}catch(Exception e){
			e.printStackTrace();
		}
	}
    /**
	 * Initialize connection to UCM
	 * @param url  url of UCM server , eg: http://portal.intertest.gov.mo/edmstest/idcplg
	 * @param user user's ID
	 * @param passwd user's password
	 * @return void
	 */
    private static void initialize(String url,String user,String passwd) throws IdcClientException{
    	m_clientManager=new IdcClientManager ();
    	m_client=m_clientManager.createClient (url);
    	m_context=new IdcContext(user,passwd);
    }

    /**
	 * Save File To UCM
	 * @param path  File's local path
	 * @param title title of file in UCM
	 * @return Content's ID
	 */
    public static String checkinFile(String path,String title) throws IdcClientException,IOException{    	
    	DataBinder dataBinder=m_client.createBinder();       	
    	dataBinder.putLocal("IdcService","CHECKIN_UNIVERSAL");    //Service Name
    	dataBinder.putLocal("dDocType",PropertiesUtil.getConfig().getProperty("dDocType"));                //Content Type
    	dataBinder.putLocal("dDocTitle",title);                   //Content Title 
    	dataBinder.putLocal("dSecurityGroup",PropertiesUtil.getConfig().getProperty("dSecurityGroup"));          //Security Group
    	dataBinder.putLocal("dDocAccount",PropertiesUtil.getConfig().getProperty("dDocAccount"));     //Security Account
//    	dataBinder.putLocal("dCollectionName", "");               //Folder id
    	dataBinder.putLocal("dDocName", new Date().getTime() + rdmString(7) + "Content-Id");    
    	dataBinder.addFile("primaryFile",new File(path));         //Primary File
    	ServiceResponse response = m_client.sendRequest(m_context,dataBinder);
    	//convert the response to a dataBinder
    	DataBinder responseData=response.getResponseAsBinder();
    	return responseData.getLocal("dDocName");
    }
    public static String rdmString(int l) {
		Random r = new Random();
		int i = 0;
		String str = "";
		while (i < l) {
			int n = r.nextInt(122);
			if (n > 64 && n < 90) {
				str += (char) n;
				i++;
			}
		}
		return str;
	}
    /**
	 * Get File From UCM
	 * @param   contentID File's ID in UCM
	 * @return an InputStream 
	 */
    public static InputStream getFile(String contentID) throws IdcClientException,IOException{    
	    DataBinder dataBinder = m_client.createBinder ();
	    dataBinder.putLocal ("IdcService", "GET_FILE");                     //Service Name
	    dataBinder.putLocal ("dDocName", contentID);                        //Content ID
	    dataBinder.putLocal("RevisionSelectionMethod","LatestReleased");	//Which Revision
	    dataBinder.putLocal("Rendition", "primary");                        //Which format? primary/Web
	    ServiceResponse response = m_client.sendRequest (m_context, dataBinder);
	    InputStream inputStream = response.getResponseStream();
	    return inputStream;
}
    
    private static boolean waitForRelease (String contentID) throws IdcClientException {
        //Get the client (from the base class) and create a new binder
        DataBinder dataBinder = m_client.createBinder ();

        //Populate the binder for a DOC_INFO service
        dataBinder.putLocal ("IdcService", "DOC_INFO_BY_NAME");
        dataBinder.putLocal ("dDocName", contentID);

        //Give the content server a minute to "release" the previous checkin
        boolean released = false;
        int count=0;
        while (!released) {
            ServiceResponse infoResponse = m_client.sendRequest (m_context, dataBinder);
            released = "RELEASED".equals (infoResponse.getResponseAsBinder ().getLocal ("dStatus"));
            if (!released) {
                try {
                    Thread.sleep (1000);
                } catch (Exception exp) {
                    //ignored
                }
            }
            if (++count >= 30) {
                System.out.println (String.format("Document %s not released after %s seconds", contentID, count));
                return false;
            }
        }
        return true;
    }
    public static void main(String args[]){
	    String cid;
    	try{    		
    		
    		
    		//Testing of Checkin File to UCM
  		    cid=UCMUtil.checkinFile("c:\\ex2.txt","��Ivan ��� v5 in static");
  		    System.out.println("File in UCM's id:"+cid);
  		    
  		    //Checking if Content is released.
  		    if (waitForRelease(cid))
  		    	System.out.println("Content is Released!!!");
  		    
  		    //Testing of Get File from UCM
        	InputStream is=UCMUtil.getFile(cid);
    		OutputStream out=new FileOutputStream(new File("c:/dest.txt"));
    		byte buf[]=new byte[1024];
    		int len;
    		while((len=is.read(buf))>0)
    			out.write(buf,0,len);
    		out.close();
    		is.close();
    	} catch (IdcClientException e) {
            e.printStackTrace ();
        } catch (IOException e) {
            e.printStackTrace ();
        };
        System.out.println("Finish Testing!");
    }
}
 


你可能感兴趣的:(oracle,应用服务器,jdbc,SQL Server,配置管理)