定制开发环境的搭建

发送反馈


配置JDK(1.8或以上版本)

Java 开发工具包(JDK),其中包含了 Java 运行环境(JRE),本产品定制开发工程支持的 JDK 版本为 1.8 及以上。Java 开发环境工具(IDE),目前最流行的开发工具是 Eclipse。

安装完 JDK 后配置环境变量,计算机→属性→高级系统设置→高级→环境变量→系统变量→新建 JAVA_HOME 变量,变量值填写 jdk 的安装目录。

注意

配置 SuperMap iPortal 许可

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 进行访问。

配置工程目录说明

工程配置完成后,会在 D:\SuperMap\eclipse-workspace\Custom_Portal\WebContent\WEB-INF 目录下生成所需要的文件,如下图所示: