Java中的动态Web服务(SOAP)提供程序

时间:2017-03-22 12:45:18

标签: java web-services soap wsdl axis2

我们在组织中共享了大量CSV文件,其中包含各种信息。我写了一个小的Java程序来监视某个共享文件夹并读取新的csv文件。我的目标是允许通过SOAP Web服务读取和更新信息。我的问题是信息结构不是静态的,所以我不能从我的Java结构创建一个WSDL文件(例如使用spring ...)。我需要创建一个动态WSDL文件。

我正在研究Axis2(http://axis.apache.org/axis2/java/core/),但我仍然觉得我遗漏了一些东西,因为我需要动态构建带有WS定义的java类,然后编译,构建.aar包然后将文件移动到axis2文件夹。这看起来有点沉重。

基本上我只需要两种方法:

  • find(id) - >返回具有指定ID的行,如果ID为NULL则返回所有
  • update(id) - >更新行,在这里我需要动态内容,因为我需要传递字段和类型应该更新。

例如我有一个user.csv:

ID;FirstName;Age;Mail   
01;Stephanie;27;sb@somemail.com

应生成如下内容:

[...]

<xsd:element name="delete">
            <xsd:complexType>
               <xsd:sequence>
                  <xsd:element maxOccurs="1" minOccurs="1" name="id" type="xsd:string" />
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>


<xsd:element name="insert">
            <xsd:complexType>
               <xsd:sequence>
                  <xsd:element maxOccurs="1" minOccurs="0" name="id" type="xsd:string" />
                  <xsd:element maxOccurs="1" minOccurs="0" name="FirstName" type="xsd:string" />
                  <xsd:element maxOccurs="1" minOccurs="0" name="Age" type="xsd:integer" />
                  <xsd:element maxOccurs="1" minOccurs="0" name="Mail" type="xsd:string" />
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>

[...]

有没有人有更好的方法呢?

干杯, 斯蒂芬妮

1 个答案:

答案 0 :(得分:0)

使用一个简单的WS,只需2次操作,并在xml中使用body raw。

xml必须符合WSDL中的非外部XSD。在服务器中,您拥有所有XSD,并且您可以验证输入并使用Jaxb创建对象,例如,您可以将其用于CSV上的CRUD操作。