geoserver中文开发手册

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

geoserver中文开发手册一.目录
目录
写在前面
一介绍
二工具
Java
Maven
"
Subversion
三源代码
源代码
提交
库结构
分支结构
四快速入门
取出源代码
@
由Maven构建
由Maven生成Eclipse工程文件
导入模块进Eclipse
在Eclipse中运行GeoServer
访问GeoServer首页
五Maven指南
六Eclipse指南
七编程指南
八释放指南
九释放测试检查列表
十CITE测试指南
十一政策与步骤
二.介绍、工具、源代码三章
一介绍
空。

二工具

在GeoServer开发者环境搭建以前,需要安装以下工具:
Java
GeoServer开发需要及其以上版本,可从Sun Microsystems获取。

注:除了可以使用Sun提供的JDK以外,也可以使用其它的,但这里我们推荐使用Sun的。

Maven
Geoserver使用Maven工具构建。

当前推荐版本是,可从Apache获取。

虽然是推荐的,但以上版本同样可用。

Subversion
Geoserver源代码由subversion库完成存储和版本管理。

对于不同平台有多种subversion客户端可获取。

更多细节请访问:。

<
三源代码
源代码
GeoServer源代码存放在: 。

使用以下方式取出开发版/trunk版本
svn co geoserver
使用以下方式取出稳定版/stable版本:
svn co geoserver
警告:Geoserver库包含大量空间数据。

从上取出这些数据对于低带宽用户来说相对就很慢或者很昂贵,这种情况下,用户可以通过以下方式仅获取源代码:
svn co 提交
通过以下步骤提交到代码库:
1. 安装subversion配置文件,请看后面备注。

2. 注册获取提交权限。

3. 将库切换到”https”协议,例如:
[root of checkout]% svn switch
库结构
branches/
~
spike/
tags/
trunk/
branches包含以前所有稳定的开发分支,,,etc…
spike包含实验版本和原型
tags包含以前所有释放版本
trunk为当前开发分支。

分支结构

每个开发分支都有如下所示的结构:
doc/
src/
data/
l doc包含用户和开发人员向导的源文件
l src包含Geoserver本身的Java源码
l data包含多种GeoServer的数据目录
三.快速入门
^
本章介绍快速搭建、运行GeoServer开发环境具体步骤。

我们假定您已经安装好所有必须的工具(内容见第
二章)。

注:本章的上的是为了尽快的让开发者搭建和运行GeoServer。

对于一些更加深入的介绍请见Maven指南和Eclipse指南。

取出源代码
由Maven构建
由Maven生成Eclipse工程文件
导入模块进Eclipse
在Eclipse里运行GeoServer
访问GeoServer首页
取出源代码由subversion库中取出源代码。

选取trunk作为最新开发源码,或者那些基本不可能经常更新的版本的稳定分支。

要么是:
svn co geoserver-trunk或者(稳定的分支

svn co 在这页示例里面,我们假定你取出源码到一个名为geoserver的目录,不过,最好还是把名字取得更详细一点为好。

由Maven构建修改目录到源树的根,执行以下maven构建命令:
cd geoserver/srcmvn clean install成功构建后会产生类似于以下的输出:
[INFO]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] ------------------------------------------------------------------------
[INFO] GeoServer ............................................. SUCCESS []
[INFO] GeoServer Maven Plugins ............................... SUCCESS []
[INFO] Configuration Deployment PlugIn ....................... SUCCESS []
[INFO] GeoServer Maven Archetypes ............................ SUCCESS []
[INFO] GeoServer WFS Output Format Archetype ................. SUCCESS []
[INFO] Core Platform Module .................................. SUCCESS []
[INFO] Data Module ........................................... SUCCESS []
[INFO] Open Web Service Module ............................... SUCCESS []
[INFO] Main Module ........................................... SUCCESS []
[INFO] Web Coverage Service Module ........................... SUCCESS []
[INFO] Web Coverage Service Module ..................... SUCCESS []
[INFO] Validation Module ..................................... SUCCESS []
[INFO] Web Feature Service Module ............................ SUCCESS []
[INFO] Web Feature Service Module ............................ SUCCESS []
[INFO] Web Map Service Module ................................ SUCCESS []
[INFO] Geoserver REST Support Code ........................... SUCCESS []
[INFO] GeoWebCache (GWC) Module .............................. SUCCESS []
[INFO] Web Application Module ................................ SUCCESS []
[INFO] Community Space ....................................... SUCCESS []
[INFO] GeoServer Extensions .................................. SUCCESS []
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
由Maven生成Eclipse工程文件生成Eclipse使用的.project文件和.classpath文件:
mvn eclipse:eclipse导入模块进Eclipse1.
启动运行Eclipse集成开发环境
2.
打开Eclipse首选项Preferences
3.
依次点击进入:Java,BuildPath,Classpath Variables,点击New
4.
创建类路径变量名称”M2_REPO”,并且设置它的值为本地Maven库的位置,点击OK。

5.
单击OK以应用新的Eclipse首选项。

6.
在包浏览Package Explorer右键并单击导入Import…
7.
选择
已有工程导入工作区Existing Projects into Workspace,单击下一步:
8.
进入geoserver/src目录
9.
确保所有模块都被选取,单击完成Finish
在Eclipse中运行GeoServer1.
在包浏览Package Explorer中选择web-app模块(或更早版本是web)2.
点击进入包(或更早版本是)
3.
在Start类上右键,单击Run as,Java Application
访问GeoServer首页
几秒后,就可通过
默认的用户admin的密码是geoserver
四.Maven指南

本章是使用Maven构建GeoServer的参考。

安装Maven见工具(第二章)
运行Maven Maven提供了从模块编译到生成测试覆盖报告的多种命令。

大部分maven命令可在源树的根运行,或者某个特模块。

注:在准备由源树的根运行maven命令时,请记住要将取出的根目录变换到src目录。

在由源树的根运行一个命令时,或者从包含其它模块的目录时,命令将会为所有模块运行。

当从单个模块运行命令时,它只为这个模块运行。

构建GeoServer最常用的命令是安装命令:
mvn clean install虽然clean命令不是必须的,但我们还是推荐用上。

上面的命令做了以下的事:
编译源代码
运行单元测试
安装成果到本地Maven库
跳过测试通常在构建时跳过单元测试很有用处。

在构建命令中添加-DskipTests标志就可以只编译单元测试而不会运行测试。

mvn -DskipTests clean install离线构建Maven操作会自动下载待构建模块中声明的依赖库。

当处理快照(SNAPSHOT)依赖时,这就有可能会有问题。

Maven每次执行一天内的首次构建时,会尝试更新它的快照依赖。

由于GeoServer依赖GeoTools库的快照版本,这时可能会有问题。

最终导致Maven下载大量GeoTools更新模块并且急剧增加构建时间。

而如果你只是本地构建geotools,这些就显得不必要了。

这时,可以使用“离线”方式运行Maven来改进:
mvn -o clean install在离线模式中,Maven不会下载任何外部依赖,也不会更新任何快照依赖。

构建扩展默认情况下,扩展没有被包含在构建中。

它们得通过Profile来明确增加到构建中。

比如下面的示例就将restconfig扩展添加到构建中:
mvn clean install -P restconfig可以同时添加多个扩展同时使用:
mvn clean install -P restconfig,oracle有个特殊的名为allExtensions的Profile可以添加所有扩展:
mvn clean install -P allExtensionsProfilesEclipse Maven的Eclipse插件用于为模块生成eclipse工程:
mvn eclipse:eclipse经过此操作后,这些模块就可以导入Eclipse工作区。

该插件有个很有用的功能就是可下载第三方依赖的相关源代码。

这是通过添加downloadSources标志来做的:
mvn -DdownloadSources eclipse:eclipse警告:当你首次启用downloadSources标志时,构建过程需要很长时间,因为它要下载GeoServer所依赖的每个库的源代码。

构建Web模块当安装好web模块后,它会通过内建的特殊配置构建。

默认情况下它注是minimal配置。

尽管如此,它也可以通过设置configId和configDirectory标志来定制任意配置。

比如:
mvn clean install -DconfigId=release -DconfigDirectory=/home/jdeolive/上
面命令可使用GeoServer上的release配置构建web模块。

configId是包含的配置目录名称,configDirectory是包含的配置目录的父级目录。

configDirectory可以像刚才的一样的绝对路径,也可以是针对web模块自身的相对路径:
mvn clean install -DconfigId=release -DconfigDirectory=../../../data上面
的命令与之前有同样的效果,尽管是引用了相对于web模块的路径。

该路径,../../../data,在GeoServer取出(check out)的代码目录结构是标准结构的情况下可用。

使用Jetty运行web模块Maven的jetty插件可用于运行嵌入了jetty容器的基于web的模块:
cd jetty:run注:该命令必须从web模块运行,如果从其它模块运行就会失败。

上面的命令将会使用自带的数据目录来运行GeoServer。

为了使用其它的数据目录可以启用GEOSERVER_DATA_DIR标志:
mvn -DGEOSERVER_DATA_DIR=/path/to/datadir jetty:run
五.Eclipse指南
本章是使用Eclipse开发GeoServer的参考。

导入模块
运行和调试
设置数据目录
更改Jetty默认端口
配置Jetty中JNDI资源
Eclipse首选项
代码格式化
代码模块
文本编辑器
编译器
导入模块参见Maven指南中的Eclipse部分。

运行和调试运行和调试web-app模块中类。

具体步骤见快速入门。

设置数据目录如果未设置,GeoServer默认会使用web-app模块里的minimal目录作为它的数据目录。

若要修改,执行以下步骤:
1.在Eclipse菜单中打开调试配置(Debug Configurations)
2.先把Start配置,选择Argument面板,并且填写-DGEOSERVER_DATA_DIR参数,设置数据目录为绝对路径。

更改Jetty默认端口如果未设置,Jetty默认会使用8080端口。

修改请按以下方式:
1.
打开上节所说的Start配置中的Argument面板。

2.
填写参数,设置它到期望的端口
配置Jetty的JNDI资源JNDI资源如数据资源可以通过提供系统属性中名为的Jetty服务器配置文件来配置,这个可以在Start配置中的Argument面板上通过VM argument参数指定。

配置文件路径是相对于web-app模块根路径的,该模块是启动配置运行的地方。

例如:
以下的Jetty服务器配置文件就配置了一个JNDI数据源:jdbc/demo,它是一个Oracle数据库的连接池。

jdbc/demo
claudius
s3cr3t
20
10
10000
300000
300000
20
true
100
true
SELECT SYSDATE FROM DUAL
Jetty没有在GeoServer的WEB-INF/指定reference-ref,因此没必要修改该文件。

GeoServer web-app模块和数据目录没有特定于Jetty的相关信息,因此JNDI资源可以被测试在Jetty下,以便于后面在Tomcat下的开发。

也可以看看GeoServer用户手册中Tomcat中建立JNDI 连接池章节。

Eclipse首选项代码格式化1.
下载文件:
2.
转到首选项中Java,Code Style,Formatter,点击Import…
3.
选择步骤1中下载的文件。

4.
点击Apply
代码模板1.
下载文件:
2.
转到首选项Java,Code Style, Formatter,点击Important…
3.
选择步骤1中下载的文件。

4.
点击Apply
文本编辑器1.
转到General,Editors,Text Editors
2.
选中Insert Space for tabs
3.
选中Show print margin,将Print margin column设置为100 4.
选中Show line numbers
5.
选中Show whitespace characters(可选)
注:显示空白字符可帮助我们发现无意中提交不必要的空格。

6.
点击Apply
编译器1.
转到Java, Compiler, Building
2.
扩展开Output folder,并将.svn/加到Filtered resources列表中。

3.
点击Apply
六.编程指南OWS服务
本节介绍GeoServer中OWS服务(原文为RESTful服务,可能为笔误)如何工作。

OWS服务概览TBA
实现一个简单的OWS服务本节将通过以下场景来介绍如何给GeoServer创建一个简单的GeoServer OWS服务。

该服务需要提供一个能广告叫做“sayHello”的单一操作的功能(capabilities)文档。

该sayHello操作的结果是一个简单的字符串:“Hello World”。

内容:
实现一个简单的OWS服务
建立
创建插件
试一试
建立创建插件的第一步是为它建立一个maven工程。

该工程我们称为“hello”。

1.
在本地文件系统中任意地方创建一个名为hello的新目录。

2.
给hello目录添加名为文件。

1.
2.$
3.<xml version="" encoding="ISO-8859-1">
4.<project xmlns="" xmlns:xsi="" xsi:schemaLocation=" ">
5.<modelVersion> <!-- set parent pom to community pom -->
6.<parent>
7.<groupId></groupId>
8.<artifactId>community</artifactId>
9.<version> </parent>
10.<groupId></groupId>
11.)
12.<artifactId>hello</artifactId>
13.<packaging>jar</packaging>
14.<version></version>
15.<name> Hello World Service Module</name>
16.<dependencies>
17.<dependency>
18.<groupId></groupId>
19.<artifactId>main</artifactId>
20.:
21.<version> </dependency>
22.</dependencies>
23.<repositories>
24.<repository>
25.<id>opengeo</id>
26.<name>opengeo</name>
27.<url> </repository>
28.</repositories>
29.[
30.</project>
复制代码
3.
在hello目录下创建Java源文件目录。

hello/
+
+ src/
+ main/
+ java/创建插件插件是一系列由spring beans实现的扩展。

实例中扩展兴趣点是一个HelloWorld的POJO。

1.
创建一个名为HelloWorld的类:
1.import class HelloWorld {
2.public HelloWorld() {
3.rite( "Hello World".getBytes() );
4.}
5.}

复制代码
该服务相对比较简单。

它提供了一个一个名为sayHello的方法,带有HttpServletRequest,HttpServletResponse 参数。

该函数的参数列表会由自动发现。

2.
创建文件将上面的类申明为一个bean。

1.<xml version="" encoding="UTF-8">
2.
3.<!DOCTYPE beans PUBLIC "--->
4.<bean id="" class="">
5.<!-- used to reference the service in the URL -->
6.<constructor-arg index="0" value="hello"/>
7.·
8.<!-- our actual service POJO defined previously -->
9.<constructor-arg index="1" ref="helloService"/>
10.<!-- a version number for this service -->
11.<constructor-arg index="2" value=""/>
12.<!-- a list of functions for this service -->
13.<constructor-arg index="3">
14.<list>
15.<value>
16..
17.sayHello</value>
18.</list>
19.</constructor-arg>
20.</bean>
21.</beans>
复制代码
到此,hello工程内容应该是看上去像下面这样了:
hello/
+
+ src/
+ main/
+ java/
+
+
试一试1.
安装hello模块。

1.[hello]% mvn install
2.】
3.[hello]% mvn install
4.[INFO] Scanning for projects...
5.[INFO] ----------------------------------------------------------------------------
6.[INFO] Building Hello World Service Module
7.[INFO] task-segment: [install]
8.[INFO] ----------------------------------------------------------------------------
9.[INFO] [resources:resources]
10.[INFO] Using default encoding to copy filtered resources.
11.&
12.[INFO] [compiler:compile]
13.[INFO] Compiling 1 source file to /home/ak/geoserver/community/hello/target/classes
14.[INFO] [resources:testResources]
15.[INFO] Using default encoding to copy filtered resources.
16.[INFO] [compiler:testCompile][INFO] No sources to compile
17.[INFO] [surefire:test][INFO] No tests to run.
18.[INFO] [jar:jar]
19.[INFO] Building jar: /home/ak/geoserver/community/hello/target/ [jar:test-jar {execution: default}][WAR
NING] JAR will be empty - no content was marked for inclusion!
20.[INFO] Building jar: /home/ak/geoserver/community/hello/target/ [install:install]
21.[INFO] Installing /home/ak/geoserver/community/hello/target/ to /home/ak/.m2/repository/org/geoserver/hel
lo/ Installing /home/ak/geoserver/community/hello/target/ to /home/ak/.m2/repository/org/geoserver/hello/ ------------------------------------------------------------------------
22.[INFO] BUILD SUCCESSFUL
23.[INFO] ------------------------------------------------------------------------
24.[INFO] Total time: 6 seconds
25.[INFO] Finished at: Fri Sep 21 14:52:31 EDT 2007
26.[INFO] Final Memory: 27M/178M
27.[INFO] -----------------------------------------------------------------------
复制代码
1.拷贝target/文件到到你的GeoServer安装的WEB-INF/lib目录。

2.重启GeoServer。

3.访问:<host>/geoserver/owsrequest=sayHello&service=hello&version=
请求request
我们服务内定义的方法
服务service
文件中Service描述符的名称
版本version
文件中Service描述符的版本
可选方法1.与web模块一起构建
另外一个可选方法是在新的插件工程上从web模块申明一个依赖。

1.
像上面一样安装hello模块。

2.
编辑web/,添加如下依赖:
<dependency>
<groupId></groupId>
<artifactId>hello</artifactId>
<version></version></dependency>3.
安装、运行web模块
[web] mvn install jetty:run4.
访问:
可选方法2:由GeoServer源中运行
作为尝试插件开发的一种可选方法:
1.
安装hello模块。

2.
更改路径到web模块
3.
安装web模块。

4.
拷贝<hello
module>/target/文件到<web
module>/target/geoserver/WEB-INF/lib目录

[/dev/geoserver/web]% cp ~/hello/target/ target/geoserver/WEB-INF/lib5.
使用Jetty运行打包的war。

[/dev/geoserver/web]% mvn jetty6:run-exploded6.
访问:。

相关文档
最新文档