如何创建我自己的Bamboo插件Rest api

问题描述 投票:0回答:1

我需要在Bamboo插件中创建自己的rest api。在atlassian-plugin.xml中

 <rest name="Clix Rest Api" i18n-name-key="clix-rest-api.name" key="clix-rest-api" path="/clixrest" version="1.0">
    <description key="clix-rest-api.description">The Clix Rest API Plugin</description>
  </rest>

在pom.xml中]

<groupId>com.clix.bamboo</groupId>
<artifactId>testbedavail</artifactId>

Java代码

@Path("/testbed")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public class ClixRestApiImpl implements ClixRestApi {

@Override
@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Path("/releaseTestbed")
public Response releaseTestbed(@QueryParam("testbedId") Integer testbedId) {

当我尝试访问其余部分时,

http://sandbamboo.clix.local/rest/clixrest/1.0/testbed/releaseTestbed?testbedId=3

http://sandbamboo.clix.local/bamboo/rest/clixrest/1.0/testbed/releaseTestbed?testbedId=3

返回未找到的页面。当我使用第一个网址时,日志中会出现一些错误消息:

2020-02-24 22:51:32,070 INFO [http-nio-8085-exec-23] [AccessLogFilter] 192.168.33.121 GET http://sandbamboo.clix.local/rest/clixrest/1.0/feed/releaseTestbed?testbedId=3 173449kb
2020-02-24 22:51:32,339 ERROR [http-nio-8085-exec-23] [DefaultServletModuleManager] Unable to create new reference LazyLoadedFilterReference{descriptor=com.clix.bamboo.testbedavail:clix-rest-api-filter (The Clix Rest API Plugin), filterConfig=com.atlassian.plugin.servlet.filter.PluginFilterConfig@5c72f1b8}
com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.NoClassDefFoundError: com/clix/bamboo/api/ClixRestApi
        at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:149)
        at com.atlassian.util.concurrent.LazyReference.get(LazyReference.java:112)
        at com.atlassian.plugin.servlet.DefaultServletModuleManager.getInstance(DefaultServletModuleManager.java:374)
        at com.atlassian.plugin.servlet.DefaultServletModuleManager.getFilter(DefaultServletModuleManager.java:367)
        at com.atlassian.plugin.servlet.DefaultServletModuleManager.getFilters(DefaultServletModuleManager.java:227)

并且ClixRestApi是一个接口,而不是一个类

package com.clix.bamboo.api;
import javax.ws.rs.core.Response;

public interface ClixRestApi {
    Response reserveTestbed(String testbedName, String estimationTime, String reason);
    Response releaseTestbed(Integer testbedId);
}

我无法确定问题出在哪里,或者如何调试此问题?

我需要在Bamboo插件中创建自己的rest api。在atlassian-plugin.xml中 ...

bamboo atlassian-plugin-sdk
1个回答
0
投票

我试图重现您的问题,但未能。使用您提供的代码和上下文,我可以在/rest/clixrest/1.0/testbed/releaseTestbed上成功调用REST端点。

因此问题似乎与您的代码无关。 Bamboo基本URL(在“系统”>“常规配置”下面的管理部分中设置)是否与您使用的URL相匹配?服务器是否在端口80上运行而不在默认的6990上运行以进行开发?前面有代理吗?

© www.soinside.com 2019 - 2024. All rights reserved.