【问题标题】:Grails and Jira Integration using RESTClient使用 RESTClient 集成 Grails 和 Jira
【发布时间】:2014-07-09 22:04:41
【问题描述】:

我正在使用 groovy http-builder 并使用 RestClient 从 JIRA 访问 Web 服务。 在开发模式下它工作正常,但是当我在 Tomcat 服务器上部署战争时,它会抛出异常

"org.apache.commons.collections.map.ListOrderedMap:方法()V 未找到。堆栈跟踪如下: org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException: 控制器 [com.tristar.JiraController] 的执行动作 [列表] 导致异常:运行时错误执行动作 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:662) 引起:org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException: 运行时错误执行动作 ... 3 更多原因:java.lang.reflect.InvocationTargetException ... 3 更多原因:java.lang.NoSuchMethodError: org.apache.commons.collections.map.ListOrderedMap: method ()V 未找到 在 net.sf.json.JSONObject.(JSONObject.java:1603) 在 groovyx.net.http.EncoderRegistry.encodeJSON(EncoderRegistry.java:301) 在 groovyx.net.http.HTTPBuilder$RequestConfigDelegate.setBody(HTTPBuilder.java:1200) 在 groovyx.net.http.HTTPBuilder$RequestConfigDelegate.setPropertiesFromMap(HTTPBuilder.java:1111) 在 groovyx.net.http.HTTPBuilder$RequestConfigDelegate.(HTTPBuilder.java:946) 在 groovyx.net.http.RESTClient.post(RESTClient.java:140) 在 com.tristar.JiraController.list(JiraController.groovy:221) "

def jiraApiUrl = 'http://ipAddress:8080/rest/api/2/'
def jiraClient = new RESTClient(jiraApiUrl)

def searchResults = jiraClient.post(requestContentType: JSON,
          path: 'search',
          body: [jql: "project=XYZ AND (status=Open OR status='In Progress') AND issuetype!=Epic AND       issuetype!='Technical task'", startAt: offset, maxResults: params.max, fields: ['summary', 'description','issuetype']])

我该如何解决这个问题?

【问题讨论】:

  • 尝试在构建之前进行完全清理。 grails clean && rm -rf ./target/ && grails refresh-dependencies && grails war。另外你可以尝试通过下一个命令grails dev war来构建。
  • 我做了所有这些事情,但没有成功。我改变了我的实现的任何方式,它现在工作正常。谢谢
  • 请将您的更改描述为答案

标签: grails jira


【解决方案1】:

我在 Build Config 中添加了这些依赖项

compile 'com.atlassian.jira:jira-rest-java-client-api:2.0.0-m25'
compile 'com.atlassian.jira:jira-rest-java-client-core:2.0.0-m25'

并使用

AsynchronousJiraRestClientFactory factory = new AsynchronousJiraRestClientFactory()
def jiraServerUri = URI.create("ipaddress")
JiraRestClient restClient = factory.createWithBasicHttpAuthentication(jiraServerUri, "username", "password")

用于认证和获取 RestClient 对象

【讨论】:

  • 这很好。它为其余调用提供方法,就像 Bob Swift 的肥皂 API 过去所做的那样。
【解决方案2】:

没有必要在 Grails 应用程序中使用 JIRA REST Client for JAVA,尽管它可能已经解决了您的问题。我遇到了同样的问题,并且能够使用 Groovy HTTP Builder 创建一个 JIRA REST 客户端。

我在 BuildConfig.groovy 中添加的唯一依赖项是:

dependencies {
 compile("org.codehaus.groovy.modules.http-builder:http-builder:0.5.0-RC1") {
  excludes 'groovy', 'xml-apis' } }

然后构建您的 JSON 查询并发布您的请求:

jiraClient.post(requestContentType: JSON, body: query)

如果您正在寻找更多信息,这篇博文可能会有所帮助:

http://ashahrami.blogspot.ca/2014/12/jira-rest-client-implementation-in.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多