定制开发环境的搭建 |
Java 开发工具包(JDK),其中包含了 Java 运行环境(JRE),本产品定制开发工程支持的 JDK 版本为 1.8 及以上。Java 开发环境工具(IDE),目前最流行的开发工具是 Eclipse。
安装完 JDK 后配置环境变量,计算机→属性→高级系统设置→高级→环境变量→系统变量→新建 JAVA_HOME 变量,变量值填写 jdk 的安装目录。
注意:
SuperMap iPortal 许可的配置请参见:许可配置说明。
SuperMap iPortal 8C SP1或更新版本,已经不依赖 SuperMap Objects Java,但是运行许可需要依赖动态库文件 HASPJava.dll( 64位的为 HASPJava_x64.dll)。
您可以通过配置如下环境变量使用iPortal中自带的动态库:
%SuperMap iPortal_HOME%,指向SuperMap iPortal 产品包的安装目录,然后在 Path 的变量值后面输入类似:%SuperMap iPortal_HOME%\support\SuperMap_License。
启动 Eclipse,选择 Window > Preferences,在 Preferences 对应的窗口左侧菜单中选择 General 并展开,选中 Workspace,在右侧菜单中 Text file encoding 下面勾选 Other,选择 UTF-8,同样,在 New text file line delimiter 下面勾选 Other,选择 Unix,如下图所示,点击 OK。
下面以 %SuperMap iPortal_HOME%\samples\code\CustomPortal 目录下的 Custom_Portal 定制工程为例,详细介绍一下工程的配置步骤。
第一步:将 %SuperMap iPortal_HOME%\samples\code\Custom_Portal 目录拷贝到 Eclipse 的工作目录,如:D:\SuperMap\eclipse-workspace。
第二步:将%SuperMap iPortal_HOME%\webapps\iportal 目录下的所有文件夹(不包括%SuperMap iPortal_HOME%\webapps\iportal\WEB-INF 目录下的 lib 文件夹和 cache 文件夹)复制到 D:\SuperMap\eclipse-workspace\Custom_Portal\WebContent 目录下,与已有的文件夹进行合并。
第三步:修改 D:\SuperMap\eclipse-workspace\Custom_Portal\WebContent\WEB-INF\web.xml 文件,删除 httpHeaderSecurity、CorsFilter 的 filter 定义和相对应的 filter-mapping 定义,即删除如下的粗体代码部分:
...
<display-name>SuperMap iPortal</display-name>
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter>
<filter-name>iserver-services</filter-name>
<filter-class>com.supermap.server.host.webapp.ApplicationFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter>
<filter-name>hostHeaderAttackFilter</filter-name>
<filter-class>com.supermap.server.host.webapp.filters.HostHeaderAttackFilter</filter-class>
<init-param>
<param-name>allowedHosts</param-name>
<param-value></param-value>
</init-param>
</filter>
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<init-param>
<param-name>antiClickJackingEnabled</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
<init-param>
<param-name>blockContentTypeSniffingEnabled</param-name>
<param-value>false</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>
...
<filter-mapping>
<filter-name>hostHeaderAttackFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>iserver-services</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
...
第四步:在 D:\SuperMap\eclipse-workspace\Custom_Portal\WebContent\WEB-INF 目录下新建 lib 文件夹,将位于 %SuperMap iPortal_HOME%\webapps\iportal\WEB-INF\lib 目录下的以下 jar 包,复制到 D:\SuperMap\eclipse-workspace\Custom_Portal\WebContent\WEB-INF\lib 目录下:
第五步:在 Eclipse 中引入定制开发工程,点击 Eclipse 的 File 菜单,然后点击 Import,在 Import 选项卡中选择 General 并展开,点击 Existing Projects into Workspace,然后点击 Next,找到位于 D:\SuperMap\eclipse-workspace 目录下的工程 Custom_Portal,如下图所示,点击 Finish,导入项目完成。
第六步:在 Eclipse 中,右键点击 Custom_Portal 工程,选择 Build Path > Configure Build Path,在弹出的对话框中点击 Libraries 选项卡,拖动下方滚动条选中 JRE System Library,然后点击右侧的 Edit 按钮,选择自己本机配置的 JDK 1.8 版本,如下图所示:
然后,点击 Finish。
第七步:配置依赖的 jar 包。在 Eclipse 中,右键点击 Custom_Portal 工程,选择 Build Path > Configure Build Path,在弹出的对话框中点击 Libraries 选项卡,点击 Add External JARs 添加以下 jar:
然后,点击 OK。
第八步:在 Eclipse 工程里创建“resources”目录,与“src”同级。同时在“resources”目录下,创建子目录“templates”:
第九步:右键点击 Custom_Portal 工程下的 IportalServer.java 类(位于 src > com.supermap.iportal.web.custom.server 包中),然后选择 Run as > Java Application ,服务启动成功,可通过 localhost:8091/iportal 进行访问。
注意:定制开发环境下建议使用自己独立部署的 Elasticsearch 搜索服务器,详情请见: 搜索服务配置。
工程配置完成后,会在 D:\SuperMap\eclipse-workspace\Custom_Portal\WebContent\WEB-INF 目录下生成所需要的文件,如下图所示: