You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GeoServer 2.23.0自定义WPS流程部署故障求助

GeoServer 2.23.0自定义WPS流程部署后无法显示的问题

我在GeoServer 2.23.0中部署自定义Web Processing Service(WPS)流程时遇到了问题:按照官方gs:helloWPS教程步骤生成了JAR包hello_wps-2.8-SNAPSHOT.jar,并放置到GeoServer的WEB/INF目录,但部署后的流程在WPS Request Builder和系统日志中均无显示。我查阅了官方文档和相关论坛,未找到针对2.23.0版本的解决方案。

我已创建processfactory路径及对应类,但问题仍未解决。以下是我的配置和代码:

pom.xml配置

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/maven-v4_0_0.xsd ">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.geoserver</groupId>
    <artifactId>hello_wps</artifactId>
    <packaging>jar</packaging>
    <version>2.8-SNAPSHOT</version>
    <name>hello_wps</name>

<profiles>
    <profile>
        <id>wps</id>
        <!-- Configuration for the "wps" profile -->
    </profile>
</profiles>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <gt.version>29.0</gt.version> <!-- GeoTools version -->
        <gs.version>2.23.0</gs.version> <!-- GeoServer version -->
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-process</artifactId>
            <version>${gt.version}</version>
        </dependency>
        <dependency>
            <groupId>org.geoserver.extension</groupId>
            <artifactId>gs-wps-core</artifactId>
            <version>${gs.version}</version>
        </dependency>
        <dependency>
            <groupId>org.geoserver</groupId>
            <artifactId>gs-main</artifactId>
            <version>${gs.version}</version>
            <classifier>tests</classifier>
            <scope>test</scope>
        </dependency>
        <!-- Add your other dependencies here -->
    </dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version> <!-- Replace with the appropriate version -->
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <!-- Other plugins... -->
    </plugins>
</build>

    <repositories>
        <repository>
            <id>osgeo-snapshot</id>
            <name>OSGeo Snapshot Repository</name>
            <url>https://repo.osgeo.org/repository/Geoserver-releases/</url>
        </repository>
        <repository>
            <id>osgeo</id>
            <name>Open Source Geospatial Foundation Repository</name>
            <url>https://repo.osgeo.org/repository/release/</url>
        </repository>
    </repositories>

</project>

Java类代码

package org.geoserver.hello.wps;

import org.geotools.process.factory.DescribeParameter;
import org.geotools.process.factory.DescribeProcess;
import org.geotools.process.factory.DescribeResult;
import org.geoserver.wps.gs.GeoServerProcess;

@DescribeProcess(title="helloWPS", description="Hello WPS Sample")
public class HelloWPS implements GeoServerProcess {

   @DescribeResult(name="result", description="output result")
   public String execute(@DescribeParameter(name="name", description="name to return") String name) {
        return "Hello, " + name;
   }
}

排查与解决建议

  1. 修正JAR包部署路径
    你提到的WEB/INF路径错误,正确路径应为GeoServer安装目录/webapps/geoserver/WEB-INF/lib,将JAR包放入该目录后重启GeoServer。

  2. 调整依赖作用域避免冲突
    GeoServer自身已包含gs-wps-core和gt-process依赖,需将这两个依赖的scope设为provided,防止打包时重复引入导致类冲突:

    <dependency>
        <groupId>org.geoserver.extension</groupId>
        <artifactId>gs-wps-core</artifactId>
        <version>${gs.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-process</artifactId>
        <version>${gt.version}</version>
        <scope>provided</scope>
    </dependency>
    
  3. 配置注解处理器生成ProcessFactory
    自定义WPS流程需要通过注解自动生成ProcessFactory,需在pom.xml中添加注解处理器配置:

    <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-process-factory</artifactId>
        <version>${gt.version}</version>
        <scope>provided</scope>
    </dependency>
    

    并修改maven-compiler-plugin配置启用注解处理:

    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <annotationProcessors>
            <annotationProcessor>org.geotools.process.factory.AnnotationProcessFactoryProcessor</annotationProcessor>
        </annotationProcessors>
    </configuration>
    
  4. 验证JAR包内容
    解压生成的JAR包,检查:

    • 编译后的HelloWPS.class文件路径是否为org/geoserver/hello/wps/HelloWPS.class
    • META-INF/services目录下是否存在org.geotools.process.ProcessFactory文件,且文件内容指向自动生成的ProcessFactory类(如org.geoserver.hello.wps.HelloWPSProcessFactory)
  5. 统一版本号
    你的JAR版本2.8-SNAPSHOT与GeoServer 2.23.0版本差距过大,建议将JAR版本改为2.23.0-SNAPSHOT,避免潜在版本冲突。

  6. 查看系统日志定位问题
    重启GeoServer后,查看logs/geoserver.log文件,搜索类加载错误、依赖缺失或ProcessFactory初始化失败的日志信息,直接定位问题根源。

内容的提问来源于stack exchange,提问作者Niko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:51:02