一、扩展服务实例

1.将iserver-extend1下的listener.java打成jar包
2.复制到D:\SuperMap-iServer\webapps\iserver\WEB-INF\lib
3.在web.xml文件中添加listener配置如下:
<listener>
<listener-class>extend.listener</listener-class>
</listener>

示例代码:

package extend;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.supermap.data.Workspace;
import com.supermap.data.WorkspaceConnectionInfo;
import com.supermap.data.WorkspaceType;

public class listener implements ServletContextListener {
private Workspace m_workspace;

// 定义的销毁函数
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
System.out.println("this is last destroyeed");
}

// 定义的初始化函数,当tomcat启动时触发定义的保存oracle工作空间的方法
public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
/*
* 当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件, 获取tomcat的
* ServletContext 对象的生命周期,
*/
ServletContext sct = sce.getServletContext();
try {
m_workspace = new Workspace();
// 初始化工作空间连接信息类
WorkspaceConnectionInfo connectionInfo = new WorkspaceConnectionInfo();
// 定义打开的工作空间类型为oracle
connectionInfo.setType(WorkspaceType.ORACLE);
// 定义的连接oracle数据库信息
connectionInfo.setServer("ORCL");
connectionInfo.setName("x'x");
connectionInfo.setUser("x'x");
connectionInfo.setPassword("x'x");
boolean openResult = m_workspace.open(connectionInfo);
if (openResult) {
System.out.print("打开工作空间成功!");
// 保存工作空间
boolean saveResult =m_workspace.save();
if(saveResult){
System.out.print("保存工作空间成功!");
}
} else {
System.out.print("打开工作空间失败!");
}
// 释放资源
connectionInfo.dispose();
m_workspace.dispose();

} catch (Exception e) {
e.printStackTrace();
}
}

}

二、扩展服务提供者实例

package com.supermap.serviceprovider;

import com.supermap.data.Workspace;
import com.supermap.data.WorkspaceConnectionInfo;
import com.supermap.data.WorkspaceType;
import com.supermap.services.components.spi.ProviderContext;
import com.supermap.services.components.spi.ProviderContextAware;

//ProviderContextAware 用于获取服务提供者上下文,通过服务提供者上下文,可以获取该服务提供者对应的配置信息
public class SaveWorkspaceProvider implements ProviderContextAware, SaveWorkspace {

private Workspace m_workspace;
// setProviderContext设置在iserver启动过程中执行,
public void setProviderContext(ProviderContext context) {
ClearSetting clearSetting = (ClearSetting) context.getConfig(ClearSetting.class);
if (clearSetting == null) {
System.out.print("无法清除数据集配置类!");
return;
}
// 定义的获取到的工作空间路径
String workspacePath = (clearSetting).getWorkSpacePath();
try {
m_workspace = new Workspace();
// 初始化工作空间连接信息类
WorkspaceConnectionInfo connectionInfo = new WorkspaceConnectionInfo();
connectionInfo.setType(WorkspaceType.SXWU);
connectionInfo.setServer(workspacePath);
boolean openResult = m_workspace.open(connectionInfo);
if (openResult) {
System.out.print("打开工作空间成功!");
// 保存工作空间
boolean saveResult = m_workspace.save();
if (saveResult) {
System.out.print("保存工作空间成功!");
}
} else {
System.out.print("打开工作空间失败!");
}
// 释放资源
connectionInfo.dispose();
m_workspace.dispose();
} catch (Exception e) {
e.printStackTrace();
}

}
}

package com.supermap.serviceprovider;

public class ClearSetting {

//workspacePath 字段拼错了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
private String workspacePath; //文件工作空间路径

public void setWorkspacePath(String workspacePath) {
this.workspacePath = workspacePath;
}

public String getWorkSpacePath() {
// TODO Auto-generated method stub
return workspacePath;
}
}

SuperMap iServer 扩展服务及扩展服务提供者范例的更多相关文章

  1. SuperMap iServer 扩展/JAVA API 系列博客整理

    转载:http://blog.csdn.net/supermapsupport/article/details/70158940 SuperMap iServer为广大用户提供了整套 SDK,应用开发 ...

  2. SSH服务及其扩展(sshpass和expect)

    SSH服务及其扩展(sshpass和expect) Linux SSH服务一共包含三个工具:ssh.scp.sftp [远程连接及执行命令] 语法:ssh -p端口 账号@IP 命令 参数说明:-o ...

  3. 属性 每秒10万吞吐 并发 架构 设计 58最核心的帖子中心服务IMC 类目服务 入口层是Java研发的,聚合层与检索层都是C语言研发的 电商系统里的SKU扩展服务

    小结: 1. 海量异构数据的存储问题 如何将不同品类,异构的数据统一存储起来呢? (1)全品类通用属性统一存储: (2)单品类特有属性,品类类型与通用属性json来进行存储: 2. 入口层是Java研 ...

  4. 在 Windows Azure 网站中进行纵向扩展和横向扩展

    编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Byron Tardif 撰写. 当您开始一个新的 Web 项目,或者刚刚开始开发一般的网站和应用程序时,您可能希望从小处着手. ...

  5. Memcache服务器端+Redis服务器端+PHP Memcache扩展+PHP Memcached扩展+PHP Redis扩展+MemAdmin Memcache管理工具+一些概念(更新中)

    Memcache和Redis因为操作简单,是我们常用的服务器数据缓存系统,以下文字仅作备忘记录,部份转载至网络. 一.定义 1.Memcache Memcache是一个高性能的分布式的内存对象缓存系统 ...

  6. PHP7 学习笔记(一)Ubuntu 16.04 编译安装Nginx-1.10.3、 PHP7.0.9、Redis3.0 扩展、Phalcon3.1 扩展、Swoole1.9.8 扩展、ssh2扩展(全程编译安装)

    ==================== PHP 7.0 编译安装================== wget http://cn2.php.net/get/php-7.0.9.tar.bz2/fr ...

  7. SuperMap iServer 9D HBase使用

    需提前将HBase进行部署,参考上篇部署文档 https://www.cnblogs.com/zhangyongli2011/p/9982143.html (转发请注明出处:http://www.cn ...

  8. iptables详解(7):iptables扩展之udp扩展与icmp扩展

    前文中总结了iptables的tcp扩展模块,此处,我们来总结一下另外两个跟协议有关的常用的扩展模块,udp扩展与icmp扩展. udp扩展 我们先来说说udp扩展模块,这个扩展模块中能用的匹配条件比 ...

  9. 理解水平扩展和垂直扩展 (转载 http://yunjiechao-163-com.iteye.com/blog/2126981)

      当一个开发人员提升计算机系统负荷时,通常会考虑两种方式垂直扩展和水平扩展.选用哪种策略主要依赖于要解决的问题 以及系统资源的限制.在这篇文章中我们将讲述这两种策略并讨论每种策越的优缺点.如果你已经 ...

随机推荐

  1. C#设计模式系列:模板方法模式(Template Method)

    你去银行取款的时候,银行会给你一张取款单,这张取款单就是一个模板,它把公共的内容提取到模板中,只留下部分让用户来填写.在软件系统中,将多个类的共有内容提取到一个模板中的思想便是模板方法模式的思想. 模 ...

  2. MVC遇上bootstrap后的ajax表单模型验证

    MVC遇上bootstrap后的ajax表单验证 使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了, ...

  3. 1、NoSQL概述

    最近抽时间把Redis学了一下,所以就在网上找了一些资料.然后找到尚硅谷-周阳老师的视频教程,觉得里面的讲的挺好.所以就把他视频当中的资料教程整理出来. 单机MySQL的美好时代 在90年代,一个网站 ...

  4. angularjs与jquery特效slidetoggle结合

    之前使用jquery的slidetoggle方法,可以轻易的实现元素的收缩展开:使用angularjs后,没有找到相关的方法,通过多方面查资料,自己写了个demo,展示slidetoggle的angu ...

  5. MySQL数据类型的验证

    CHAR char (M) M字符,长度是M*字符编码长度,M最大255. 验证如下: mysql)) default charset=utf8; ERROR (): ); use BLOB or T ...

  6. 关于Docker目录挂载的总结

    Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定: # docker ...

  7. kafka源码分析之二客户端分析

    客户端由两种:生产者和消费者 1. 生产者 先看一下生产者的构造方法: private KafkaProducer(ProducerConfig config, Serializer<K> ...

  8. ZOJ Problem Set - 1338 Up and Down Sequences 解释 ac代码

    这道题目我一开始一头雾水,怎么都数不对,参考了下网上的博文,才弄懂. 题意是这样的,如果是上升序列,上升序列的长度不是所有上升数字的,是这么规定的,如果它与前一个数字构成上升,那么这个数字算上长度.所 ...

  9. ZOJ Problem Set - 1067 Color Me Less

    这道题目很简单,考察的就是结构体数组的应用,直接贴代码了 #include <stdio.h> #include <math.h> typedef struct color { ...

  10. 解决java代码测试http协议505错误

    代码功能:通过java代码获取网页源代码: 所用工具:Myclipse8.5+tomcat6.0+浏览器 系统环境:windows xp旗舰版 火狐浏览器版本: IE浏览器版本: 测试http协议有错 ...