geoserver中文开发手册Word文件下载.docx
《geoserver中文开发手册Word文件下载.docx》由会员分享,可在线阅读,更多相关《geoserver中文开发手册Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。
?
。
GeoServer源代码存放在:
使用以下方式取出开发版/trunk版本
使用以下方式取出稳定版/stable版本:
警告:
Geoserver库包含大量空间数据。
从上取出这些数据对于低带宽用户来说相对就很慢或者很昂贵,这种情况下,用户可以通过以下方式仅获取源代码:
通过以下步骤提交到代码库:
1.?
安装subversion配置文件,请看后面备注。
2.?
注册获取提交权限。
3.?
将库切换到”https”协议,例如:
branches/
spike/
tags/
trunk/
branches包含以前所有稳定的开发分支,1.6.x,1.7.x,etc…
spike包含实验版本和原型
tags包含以前所有释放版本
trunk为当前开发分支。
每个开发分支都有如下所示的结构:
doc/
src/
data/
l?
doc包含用户和开发人员向导的源文件
src包含Geoserver本身的Java源码
data包含多种GeoServer的数据目录
三.快速入门
本章介绍快速搭建、运行GeoServer开发环境具体步骤。
我们假定您已经安装好所有必须的工具(内容见第二章)。
本章的上的是为了尽快的让开发者搭建和运行GeoServer。
对于一些更加深入的介绍请见Maven指南和Eclipse指南。
✍
在Eclipse里运行GeoServer
取出源代码由subversion库中取出源代码。
选取trunk作为最新开发源码,或者那些基本不可能经常更新的版本的稳定分支。
要么是:
svn?
co?
geoserver-trunk或者(稳定的1.7.x分支
)
geoserver-1.7.x在这页示例里面,我们假定你取出源码到一个名为geoserver的目录,不过,最好还是把名字取得更详细一点为好。
由Maven构建修改目录到源树的根,执行以下maven构建命令:
cd?
geoserver/srcmvn?
clean?
install成功构建后会产生类似于以下的输出:
[INFO]
[INFO]?
------------------------------------------------------------------------
Reactor?
Summary:
GeoServer?
.............................................?
SUCCESS?
[10.271s]
Maven?
Plugins?
...............................?
[0.865s]
Configuration?
Deployment?
PlugIn?
.......................?
[3.820s]
Archetypes?
............................?
[0.054s]
WFS?
Output?
Format?
Archetype?
.................?
[0.390s]
Core?
Platform?
Module?
..................................?
[5.270s]
Data?
...........................................?
[4.521s]
Open?
Web?
Service?
[2.730s]
Main?
[10.077s]
Coverage?
...........................?
[3.785s]
1.1.1?
.....................?
[5.254s]
Validation?
.....................................?
[1.131s]
Feature?
[6.695s]
[1.197s]
Map?
................................?
[8.519s]
Geoserver?
REST?
Support?
Code?
[3.366s]
GeoWebCache?
(GWC)?
..............................?
[0.255s]
Application?
[27.386s]
Community?
Space?
.......................................?
[0.312s]
Extensions?
[0.071s]
BUILD?
SUCCESSFUL
由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.
Explorer中选择web-app模块(1.7.x或更早版本是web)
点击进入包(1.7.x或更早版本是)
在Start类上右键,单击Run?
as,?
Java?
Application
访问GeoServer首页✍
几秒后,就可通过访问到GeoServer
默认的用户admin的密码是geoserver
四.Maven指南
本章是使用Maven构建GeoServer的参考。
安装Maven见工具(第二章)
运行MavenMaven提供了从模块编译到生成测试覆盖报告的多种命令。
大部分maven命令可在源树的根运行,或者某个特模块。
在准备由源树的根运行maven命令时,请记住要将取出的根目录变换到src目录。
在由源树的根运行一个命令时,或者从包含其它模块的目录时,命令将会为所有模块运行。
当从单个模块运行命令时,它只为这个模块运行。
构建GeoServer最常用的命令是安装命令:
install虽然clean命令不是必须的,但我们还是推荐用上。
上面的命令做了以下的事:
编译源代码
运行单元测试
安装成果到本地Maven库
跳过测试通常在构建时跳过单元测试很有用处。
在构建命令中添加-DskipTests标志就可以只编译单元测试而不会运行测试。
-DskipTests?
install离线构建Maven操作会自动下载待构建模块中声明的依赖库。
当处理快照(SNAPSHOT)依赖时,这就有可能会有问题。
Maven每次执行一天内的首次构建时,会尝试更新它的快照依赖。
由于GeoServer依赖GeoTools库的快照版本,这时可能会有问题。
最终导致Maven下载大量GeoTools更新模块并且急剧增加构建时间。
而如果你只是本地构建geotools,这些就显得不必要了。
这时,可以使用“离线”方式运行Maven来改进:
-o?
install在离线模式中,Maven不会下载任何外部依赖,也不会更新任何快照依赖。
构建扩展默认情况下,扩展没有被包含在构建中。
它们得通过Profile来明确增加到构建中。
比如下面的示例就将restconfig扩展添加到构建中:
install?
-P?
restconfig可以同时添加多个扩展同时使用:
restconfig,oracle有个特殊的名为allExtensions的Profile可以添加所有扩展:
allExtensionsProfilesEclipseMaven的Eclipse插件用于为模块生成eclipse工程:
eclipse经过此操作后,这些模块就可以导入Eclipse工作区。
该插件有个很有用的功能就是可下载第三方依赖的相关源代码。
这是通过添加downloadSources标志来做的:
-DdownloadSources?
eclipse警告:
当你首次启用downloadSources标志时,构建过程需要很长时间,因为它要下载GeoServer所依赖的每个库的源代码。
构建Web模块当安装好web模块后,它会通过内建的特殊配置构建。
默认情况下它注是minimal配置。
尽管如此,它也可以通过设置configId和configDirectory标志来定制任意配置。
比如:
GeoServer上的release配置构建web模块。
configId是包含的配置目录名称,configDirectory是包含的配置目录的父级目录。
configDirectory可以像刚才的一样的绝对路径,也可以是针对web模块自身的相对路径:
-DconfigId=release?
-DconfigDirectory=../../../data上面的命令与之前有同样的效果,尽管是引用了相对于web模块的路径。
该路径,../../../data,在GeoServer取出(check?
out)的代码目录结构是标准结构的情况下可用。
使用Jetty运行web模块Maven的jetty插件可用于运行嵌入了jetty容器的基于web的模块:
web模块运行,如果从其它模块运行就会失败。
上面的命令将会使用自带的数据目录来运行GeoServer。
为了使用其它的数据目录可以启用GEOSERVER_DATA_DIR标志:
-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面板。
填写-Djetty.port参数,设置它到期望的端口
配置Jetty的JNDI资源JNDI资源如数据资源可以通过提供系统属性中名为的Jetty服务器配置文件来配置,这个可以在Start配置中的Argument面板上通过VM?
argument参数指定。
配置文件路径是相对于web-app模块根路径的,该模块是启动配置运行的地方。
例如:
Jetty服务器配置文件就配置了一个JNDI数据源:
jdbc/demo,它是一个Oracle数据库的连接池。
jdbc/demo?
claudius?
s3cr3t?
20?
10?
0?
10000?
300000?
true?
100?
SELECT?
SYSDATE?
FROM?
DUAL?
Jetty没有在GeoServer的WEB-INF/web.xml指定reference-ref,因此没必要修改该文件。
web-app模块和数据目录没有特定于Jetty的相关信息,因此JNDI资源可以被测试在Jetty下,以便于后面在Tomcat下的开发。
也可以看看GeoServer用户手册中Tomcat中建立JNDI连接池章节。
Eclipse首选项代码格式化1.
下载文件:
转到首选项中Java,Code?
Style,Formatter,点击Import…
选择步骤1中下载的formatter.xml文件。
点击Apply
代码模板1.
转到首选项Java,Code?
Style,?
Formatter,点击Important…
文本编辑器1.
转到General,Editors,Text?
Editors
选中Insert?
for?
tabs
选中Show?
print?
margin,将Print?
margin?
column设置为100
line?
numbers
whitespace?
characters(可选)
显示空白字符可帮助我们发现无意中提交不必要的空格。
编译器1.
转到Java,?
Compiler,?
Building
扩展开Output?
folder,并将.svn/加到Filtered?
resources列表中。
六.编程指南OWS服务
本节介绍GeoServer中OWS服务(原文为RESTful服务,可能为笔误)如何工作。
OWS服务概览TBA
实现一个简单的OWS服务本节将通过以下场景来介绍如何给GeoServer创建一个简单的GeoServer?
OWS服务。
该服务需要提供一个能广告叫做“sayHello”的单一操作的功能(capabilities)文档。
该sayHello操作的结果是一个简单的字符串:
“Hello?
World”。
内容:
实现一个简单的OWS服务
建立
创建插件
试一试
建立创建插件的第一步是为它建立一个maven工程。
该工程我们称为“hello”。
在本地文件系统中任意地方创建一个名为hello的新目录。
给hello目录添加名为pom.xml文件。
1.<
xml?
version="
1.0"
encoding="
ISO-8859-1"
>
2.?
<
!
--?
set?
parent?
pom?
to?
community?
-->
3.?
parent>
4.?
groupId>
org.geoserver<
/groupId>
5.?
artifactId>
community<
/artifactId>
6.?
/parent>
7.?
8.?
hello<
9.?
packaging>
jar<
/packaging>
10.?
version>
1.0<
/version>
11.?
name>
Hello?
World?
Module<
/name>
12.?
dependencies>
13.?
dependency>
14.?
15.?
main<
16.?
/dependency>
17.?
/dependencies>
18.?
repositories>
19.?
repository>
20.?
id>
opengeo<
/id>
21.?
22.?
/repository>
23.?
/repositories>
24.<
/project>
复制代码
在hello目录下创建Java源文件目录。
hello/
+?
pom.xml
src/
main/
java/创建插件插件是一系列由spring?
beans实现的扩展。
实例中扩展兴趣点是一个HelloWorld的POJO。
创建一个名为HelloWorld的类:
1.public?
class?
HelloWorld?
{?
public?
HelloWorld()?
//?
Do?
nothing?
4.}?
void?
sayHello(HttpServletRequest?
request,?
HttpServletResponse?
response)
throws?
ServletException,?
IOException?
response.getOutputStream().write(?
"
World"
.getBytes()?
);
}
该服务相对比较简单。
它提供了一个一个名为sayHello的方法,带有HttpServletRequest,HttpServletResponse参数。
该函数的参数列表会由自动发现。
创建applicationContext.xml文件将上面的类申明为一个bean。
UTF-8"
2.<
beans>
Spring?
will?
reference?
the?
instance?
of?
by?
id?
name?
helloService"
bean?
id="
class="
HelloWorld"
/bean>
used?
service?
in?
URL?
constructor-arg?
index="
0"
value="
hello"
/>
our?
actual?
POJO?
defined?
previou