我需要在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中
我试图重现您的问题,但未能。使用您提供的代码和上下文,我可以在/rest/clixrest/1.0/testbed/releaseTestbed上成功调用REST端点。
因此问题似乎与您的代码无关。 Bamboo基本URL(在“系统”>“常规配置”下面的管理部分中设置)是否与您使用的URL相匹配?服务器是否在端口80上运行而不在默认的6990上运行以进行开发?前面有代理吗?