OTRS:使用 wsdl 生成 Java SEI 时出错

2024-03-28

Windows 7, Java 7 OTRS appliannce.enter image description here

我正在尝试使用 wsimport 来生成带有 wsdl 文件的 Java SEIhttps://raw.githubusercontent.com/OTRS/otrs/master/development/webservices/GenericTicketConnectorSOAP.wsdl https://raw.githubusercontent.com/OTRS/otrs/master/development/webservices/GenericTicketConnectorSOAP.wsdl

我从命令提示符(以管理员身份运行)尝试,它给了我错误(参见附件)并且没有生成任何内容。

我还尝试使用 Netbeans 8。我选择从 wsdl 文件创建 Web 服务,但它抱怨找不到服务或端口。然后我验证了 wsdl 文件,它找不到此元素的声明 xmlns:tns="http://www.otrs.org/TicketConnector/">

我应该如何生成 SEI 来与 Java 中的 OTRS 对话?

谢谢。


我在这里为任何有兴趣从 Java 创建 OTRS 票证的人发布我的解决方案。我希望有更多有关从 Java 访问 OTRS 的文档。

  1. 从 wsdl 生成 Java 存根类是不可能的。我在任何地方都找不到任何解决方案,也没有收到这里任何人或 OTRS 论坛 - forums.otterhub.org 的任何回复。 (Google OTRS 小组不会发布我的问题。)

  2. 要访问 OTRS Web 服务,您必须使用 SOAP。我首先在 otrs 服务器上运行 SOAPRequest.pl 以弄清楚所有内容,然后从那里返回。在此期间,我还遇到了将命名空间 uri 链接到本地​​名称的问题。

我的工作代码在这里,

try {
    SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
    SOAPConnection conn = scf.createConnection();
    MessageFactory mf = MessageFactory.newInstance();
    SOAPMessage msg = mf.createMessage();
    SOAPPart sp = msg.getSOAPPart();

    SOAPEnvelope env = sp.getEnvelope();
    env.addNamespaceDeclaration("tns", "http://www.otrs.org/TicketConnector/");
    SOAPBody body = env.getBody();
    SOAPBodyElement dispatch = body.addBodyElement(new QName("http://www.otrs.org/TicketConnector/", "TicketCreate", "tns"));
    dispatch.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "UserLogin", "tns")).addTextNode("some user login");
    dispatch.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Password", "tns")).addTextNode("some user password");

    SOAPElement tkt = dispatch.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Ticket", "tns"));
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Title", "tns")).addTextNode("some title");
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Queue", "tns")).addTextNode("one of your queue names");
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Type", "tns")).addTextNode("one of your types");
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "CustomerUser", "tns")).addTextNode("some email address not customer id/name/username. Thought this could be my sys config");
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "State", "tns")).addTextNode("one of your states");
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Priority", "tns")).addTextNode("one of your priorities");

    SOAPElement article = dispatch.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Article", "tns"));
    article.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Subject", "tns")).addTextNode("some subject");
    article.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Body", "tns")).addTextNode("some body");
    article.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "ContentType", "tns")).addTextNode("text/plain; charset=utf8");

    SOAPElement dynamicField = dispatch.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "DynamicField", "tns"));
    dynamicField.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Name", "tns")).addTextNode("one of your dynamic field");
    dynamicField.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Value", "tns")).addTextNode("your dynamic field value");

    dispatch.addChildElement(tkt);
    dispatch.addChildElement(article);
    dispatch.addChildElement(dynamicField);

    /* Print the request message */
    System.out.print("Request SOAP Message:");
    msg.writeTo(System.out);
    System.out.println();
    URL url = new URL("http://your otrs ip address/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorSOAP");
    SOAPMessage resp = conn.call(msg, url);
    resp.writeTo(System.out);
    System.out.println();
    } catch (SOAPException | UnsupportedOperationException | IOException e) {
        e.printStackTrace();
    }

我提到的链接是:

  • https://github.com/OTRS/otrs/tree/master/development/webservices http://links%20I%20referred%20are:%20%5Burl%5Dhttps://github.com/OTRS/otrs/tree/master/development/webservices%5B/url%5D%20(Perl%20script)%20%5Burl%5Dhttps://github.com/gtudan/OTRS-Client%5B/url%5D%20(Access%20OTRA%20via%20Java%20SOAP)%20%5Burl%5Dhttp://sastriawan.blogspot.com/2010/01/using-javaxxmlsoap-to-access-otrs-soap.html%5B/url%5D%20(Access%20OTRA%20via%20Java%20SOAP)%20%5Burl%5Dhttps://stackoverflow.com/questions/7148081/soap-message-with-javax-xml-soap-namespace-error%5B/url%5D%20(namespace%20binding)(Perl 脚本)
  • https://github.com/gtudan/OTRS-Client https://github.com/gtudan/OTRS-Client(通过 Java SOAP 访问 OTRA)
  • http://sastriawan.blogspot.com/2010/01/using-javaxxmlsoap-to-access-otrs-soap.html http://sastriawan.blogspot.com/2010/01/using-javaxxmlsoap-to-access-otrs-soap.html(通过 Java SOAP 访问 OTRA)
  • 带有 javax.xml.soap 的 SOAP 消息 - 命名空间错误? https://stackoverflow.com/questions/7148081/soap-message-with-javax-xml-soap-namespace-error(命名空间绑定)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OTRS:使用 wsdl 生成 Java SEI 时出错 的相关文章

  • 使用 JodaTime 将 UTC 转换为本地时间(以毫秒为单位)

    我正在尝试使用 Jodatime 显示特定时间段内的交易 我们的服务器要求开始日期和结束日期采用 UTC 这可能是显而易见的 因此 围绕这些的任何业务逻辑都使用 DateTime 对象 并将时区设置为DateTimeZone UTC e g
  • Ant 复制文件而不覆盖

    Is there any command in ant to copy files from one folder structure to another without checking the last modified date t
  • 何时在 Springs @Configuration 中将 proxyBeanMethods 设置为 false?

    当查看 spring 自动配置时源代码 https github com spring projects spring boot tree master spring boot project spring boot autoconfigu
  • 如何在 El Capitan (OS X 10.11) 中设置 Android Studio?

    全新安装 El Capitan 10 11 尝试安装 Android Studio 版本 1 21 Error Android Studio was unable to find a valid JVM Please download it
  • 如何缓解 Apache Log4j 反序列化 RCE (CVE-2019-17571)

    我已将 log4j core 依赖项升级到 2 15 0 以防止任何潜在的 Log4Shell 攻击 话虽如此 我无法从 1 2 17 升级 slf4j log4j12 的间接 log4j 依赖项 因为 slf4j log4j12 的最新稳
  • java中使用[:punct:]函数的正则表达式

    我在用 punct 替换 a 中特殊字符的函数 字符串例如 REPLACE REGEXP REPLACE 第 1 列 punct 作为输出 作为java中SQL字符串的一部分 但我想要特定的特殊字符 不被替换 你能建议最好的方法吗 Acc
  • 无法获取提供程序 androidx.core.content.FileProvider:java.lang.IllegalArgumentException:缺少 android.support.FILE_PROVIDER_PATHS 元数据?

    我看了很多这样的帖子 但还是不知道问题出在哪里 我尝试更改 file paths xml 中的路径和名称 文件路径 xml
  • Android文件上传器与服务器端php

    我几个小时以来一直在寻找解决方案 但找不到任何解决方案 基本上 我想从我的 Android 设备上传文件到 http 网站 但是 我不知道如何做到这一点 我在设备上使用java 并且我想在服务器端使用PHP 我只想上传文件 而不是在服务器上
  • LDAP中超时的实现

    我一直在处理我们正在使用的应用程序LDAP获取用户详细信息 有时获取用户详细信息需要更多时间 我想实施time out获取详细信息的方法 以便我们可以避免在最坏的情况下在服务器中挂起事务 这里我们使用的是LdapUtil我们在其中配置的类L
  • Spring数据异常处理

    我正在使用 Spring Data JPA 开发一个项目 我需要处理 JpaRepository 方法调用中的一些异常 在下面的代码中 我需要拦截主键违规错误 但无法直接捕获异常 就我而言 当发生此类异常时 存储库层 JpaReposito
  • 如何在 selenium Chrome 功能中设置默认下载目录?

    请查找以下具有 chrome 功能的代码 事实上浏览器并没有将文件下载到指定的路径 private static DesiredCapabilities getChromeCapabilities throws Exception Stri
  • Spring 如何在登录网址上设置动态前缀

    我有一个始终以动态前缀开头的 Spring 应用程序 这是因为我需要该前缀来进行一些内部配置 问题是 当我尝试设置登录页面时 无法传递该前缀并使其工作 如何为我的登录页面设置动态前缀 这是我的 AppController 的一部分 我在其中
  • 如何使用 JAVA 将本地图像而不是 URL 发送到 Microsoft Cognitive Face API

    我正在尝试使用 Microsoft 认知服务的 Face API 我想知道如何通过 Rest API 调用将本地图像发送到 Face API 并使用它请求结果JAVA 有人可以帮我解决这个问题吗 Microsoft 在其网站上提供的测试选项
  • 光线追踪三角形

    我正在用java编写一个光线追踪器 并且我能够追踪球体 但我相信我追踪三角形的方式有问题 据我了解 这是基本算法 首先确定射线是否与plane三角形已打开 剪裁所有点 使它们与三角形位于同一平面上 因此xy以平面为例 根据沿着新平面向任意方
  • 正确使用Optional.ifPresent()

    我正在尝试理解ifPresent 的方法OptionalJava 8 中的 API 我有一个简单的逻辑 Optional
  • 如何在java中将ojalgo稀疏数组存储到文件中?

    我目前有一个 SparseStore 矩阵 我在其中执行大量计数和计算 我想将其存储到文件中 以便以后可以重复使用它 而无需重新执行之前的所有计算 我尝试了 Java 中的基本序列化 ObjectOutputStream outputStr
  • 滚动文件实现

    我一直很好奇滚动文件是如何在日志中实现的 如何开始用任何语言创建一个文件写入类 以确保不超过文件大小 我能想到的唯一可能的解决方案是 write method size file size size of string to write i
  • 在 Maven Shade 插件中包含依赖项

    我正在尝试使用 Apache 的 commons lang3 创建一个可部署的 jar 但是 我的 Hadoop 所在的 AWS 集群不包含此库 因此我收到了 classNotFoundException 我想我需要手动添加该依赖项 但我在
  • 如何在jsf页面中嵌入java代码?

    我有 一个名为 LoginBean 的托管 bean 名为 login xhtml 的 JSF 页面 在这个 jsf 页面中 我有一个登录表单 在managebean 内部我有一个loginCheck 函数 public void logi
  • Java 压缩字符串

    我需要创建一个接收字符串并返回字符串的方法 防爆输入 AAABBBCCC 防爆输出 3A4B2C 好吧 这很尴尬 我在今天的面试中无法做到这一点 我正在申请初级职位 现在 我在家尝试制作一些静态工作的东西 我的意思是 不使用循环有点无用 但

随机推荐