1

我正在尝试在 JIRA 中实现一个侦听器,它使用 SOAP 来联系 Web 服务(实际上它是 OTRS,另一个问题管理系统)。我选择遵循 SimpleListener 实现(JIRA Listener Event),而不是 atlassian-event。我选择通过插件机制来实现它,而不是在 JIRA 的 CLASSPATH 中安装一次性静态类。(也许那是错误的决定,我不知道)。

注意:我不太了解 SOAP、WSDL,也不了解 JIRA(codehouse、osgi)的内部结构。我遵循了以下给出的说明: https ://developer.atlassian.com/docs/getting-started/set-up-the-atlassian-plugin-sdk-and-build-a-project/create-a- helloworld-plugin-project (以及后续的说明页面)。

我使用 atlas-create-jira-plugin 为 JIRA 创建了一个插件。

我生成(使用 org.apache.axis.wsdl.WSDL2Java 类——我认为它被称为 Apache 的 Axis 版本 1——在命令行模式中从 WSDL 文件:standardTicketActionsSoap.wsdl)一堆 Java 类我添加到插件中,如:

org/otrs/www/TicketConnector/GenericTicketConnector.java
org/otrs/www/TicketConnector/GenericTicketConnectorLocator.java
org/otrs/www/TicketConnector/GenericTicketConnector_BindingStub.java
org/otrs/www/TicketConnector/GenericTicketConnector_PortType.java
org/otrs/www/TicketConnector/OTRS_Article.java
org/otrs/www/TicketConnector/OTRS_Attachment.java
org/otrs/www/TicketConnector/OTRS_DynamicField.java
org/otrs/www/TicketConnector/OTRS_Error.java
org/otrs/www/TicketConnector/OTRS_PendingTime.java
org/otrs/www/TicketConnector/OTRS_TicketCreate_Ticket.java
org/otrs/www/TicketConnector/OTRS_TicketGetResponse_Article.java
org/otrs/www/TicketConnector/OTRS_TicketGetResponse_Attachment.java
org/otrs/www/TicketConnector/OTRS_TicketGetResponse_Ticket.java
org/otrs/www/TicketConnector/OTRS_TicketSearch_DynamicField.java
org/otrs/www/TicketConnector/OTRS_TicketSearch_TicketFlag.java
org/otrs/www/TicketConnector/OTRS_TicketUpdate_Ticket.java
org/otrs/www/TicketConnector/SessionCreate.java
org/otrs/www/TicketConnector/SessionCreateResponse.java
org/otrs/www/TicketConnector/TicketCreate.java
org/otrs/www/TicketConnector/TicketCreateResponse.java
org/otrs/www/TicketConnector/TicketGet.java
org/otrs/www/TicketConnector/TicketSearch.java
org/otrs/www/TicketConnector/TicketSearchResponse.java
org/otrs/www/TicketConnector/TicketUpdate.java
org/otrs/www/TicketConnector/TicketUpdateResponse.java

我不得不根据以下内容手动修改两个生成的类: 如何解决 SAXException: Invalid element in,以避免出现“org.xml.sax.SAXException: Invalid element”错误。

我对这种方法有三个问题,其中第三个是真正的问题:

a) 使用 FastDev 或 atlas-cli 'pi' 命令刷新不起作用,出现“[INFO] Waiting for commands...”症状(如:在 atlassian 的答案页面主题中:fastdev-not-end-up-处理,但修复对我不起作用),我总是需要关闭完整的 JIRA 测试安装并重新启动它。这可能是由于一些错误的插件配置,虽然脖子很痛,但我暂时可以忍受。

b) 通过 Maven(atlas-run 或 atlas-build)进行命令行构建不会报告任何错误,而使用 Eclipse 编译项目将失败,并显示:

项目构建错误:无法解决的构建扩展:插件 com.atlassian.maven.plugins:maven-jira-plugin:5.0.13 或其依赖项之一无法解决:未能找到 com.atlassian.maven.plugins:maven-jira -plugin:jar:5.0.13 in http://repo.maven.apache.org/maven2被缓存在本地仓库中,直到central的更新间隔过去或强制更新后才会重新尝试解析

c)当监听器被执行时,我得到一个讨厌的:java.lang.LinkageError:加载器约束冲突:解析字段“服务”时引用类的类加载器(org/apache/felix/framework/ModuleImpl$ModuleClassLoader 的实例) , org/apache/axis/client/Stub 和字段解析类型 org/apache/catalina/loader/WebappClassLoader 的类加载器(org/apache/catalina/loader/WebappClassLoader 的实例)具有不同的 Class 对象在 org.otrs.www.TicketConnector.GenericTicketConnector_BindingStub.(GenericTicketConnector_BindingStub.java:98) 处输入,这是真正的表演障碍。

这可能是一个简单的 Maven 配置问题吗?谢谢,

米歇尔

4

0 回答 0