一、扩展服务实例

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. VS-默认端口导致项目不能加载的解决方案

  2. Cordova+Asp.net Mvc+GIS跨平台移动应用开发实战1-系统初步搭建(附演示,apk,全部源码)

    1.前言 身处在移动互联网的今天,移动应用开发炙手可热,身为程序猿的我们怎么能错过开发一款我们自己的APP.本人算是一个基于.net的GIS开发入门者(马上就大四啦), 暑假在学校参加GIS比赛有大把 ...

  3. C#设计模式系列:桥接模式(Bridge)

    1.桥接模式简介 1.1>.定义 当一个抽象可能有多个实现时,通常用继承来进行协调.抽象类定义对该抽象的接口,而具体的子类则用不同的方式加以实现.继承机制将抽象部分与它的实现部分固定在一起,使得 ...

  4. 可惜Java中没有yield return

    项目中一个消息推送需求,推送的用户数几百万,用户清单很简单就是一个txt文件,是由hadoop计算出来的.格式大概如下: uid caller 123456 12345678901 789101 12 ...

  5. (四)WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 在前面我花了两个篇幅来讲解行列号的获取,也解释了为什么要获取行 ...

  6. 如何用easyui+JAVA 实现动态拼凑datagrid表格

    先给大家看一看效果,最近一段时间都在研究这个东西. 如果我把日期间隔选宽呢?比如5月日到5月5日?下面给大家看看效果,不用担心哦 看到了吧,哈哈,这个日期都是动态生成的,下面就来跟大家分享一下这个的实 ...

  7. Java继承与组合

    Java继承与组合 继承 java 中使用extends关键字表示继承关系,当创建一个类时,如果没有明确指出要继承的类,则是隐式地从根类Object进行继承. 子类继承父类的成员变量 子类能够继承父类 ...

  8. [java] 深入理解内部类: inner-classes

    [java] 深入理解内部类: inner-classes // */ // ]]>   [java] 深入理解内部类: inner-classes Table of Contents 1 简介 ...

  9. Android之实现ViewPagerIndicator

    PS:最近一直忙于学习任务,一直没有时间去写博客.今天周六,终于有时间了. 学习任务: 1.打造一个自己的ViewPagerIndicator   最近被安排了一大堆的学习任务,感觉老板还是很好的,让 ...

  10. SOA、ESB、NServiceBus、云计算 总结

    SOA SOA 是通过功能组件化.服务化,来实现系统集成.解决信息孤岛,这是其主要目标.而更进一步则是实现更快响应业务的变化.更快推出新的应用系统.与此同时,SOA 还实现了整合资源,资源复用. SO ...