首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在自定义包中生成Axis2源代码

如何在自定义包中生成Axis2源代码
EN

Stack Overflow用户
提问于 2017-02-07 14:50:52
回答 1查看 508关注 0票数 0

我试图从多个WSDL文件中生成Axis2 (v1.6.1) web服务客户端代码,以便在单个项目中有多个web服务客户端。我使用Ant来使用codegen任务生成源代码。

因此,我需要使用自定义命名空间来打包映射,以使每个web服务客户端的代码与其他的代码保持分离,以避免冲突。

下面是一个WSDL文件示例中的名称空间:

代码语言:javascript
复制
<wsdl:definitions targetNamespace="http://www.elster-eis.com/ImportExport"
    xmlns:tns="http://www.elster-eis.com/ImportExport"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>

我已经设法将生成的代码的主体放入适当的包中。我已经设法在自定义包中生成soapenc命名空间。但是,我无法将在org\w3\www\_2004\_06\xmlmime中生成的代码放入自定义包的目录结构中。

下面是我的Ant构建文件的相关部分:

代码语言:javascript
复制
<property name="srv.pkg" value="com.company.webservice.mas" />

<property name="srv.mappings" value="http://www.elster-eis.com/ImportExport=${srv.pkg},http://www.w3.org/2001/XMLSchema=${srv.pkg}.xsd,http://schemas.xmlsoap.org/wsdl/soap/=${srv.pkg}.soap,http://microsoft.com/wsdl/mime/textMatching/=${srv.pkg}.tm,http://schemas.xmlsoap.org/soap/encoding/=${srv.pkg}.soapenc,http://schemas.xmlsoap.org/wsdl/mime/=${srv.pkg}.mime,http://schemas.xmlsoap.org/wsdl/soap12/=${srv.pkg}.soap12,http://schemas.xmlsoap.org/wsdl/http/=${srv.pkg}.http,http://schemas.xmlsoap.org/wsdl/=${srv.pkg}.wsdl" />

<target name="build.source" depends="define.tasks">
    <codegen
        wsdlfilename="${srv.wsdl}"
        packageName="${srv.pkg}"
        databindingName="xmlbeans"
        output="."
        generateAllClasses="true"
        serverside="true"
        generateservicexml="true"
        testcase="true"
        namespaceToPackages="${srv.mappings}"
    />
</target>

为了便于阅读,下面是重新打包映射的名称空间(它们都在一行上,在Ant构建文件中用逗号分隔,没有空格):

http://www.elster-eis.com/ImportExport=${srv.pkg}, http://www.w3.org/2001/XMLSchema=${srv.pkg}.xsd, http://schemas.xmlsoap.org/wsdl/soap/=${srv.pkg}.soap, http://microsoft.com/wsdl/mime/textMatching/=${srv.pkg}.tm, http://schemas.xmlsoap.org/soap/encoding/=${srv.pkg}.soapenc, http://schemas.xmlsoap.org/wsdl/mime/=${srv.pkg}.mime, http://schemas.xmlsoap.org/wsdl/soap12/=${srv.pkg}.soap12, http://schemas.xmlsoap.org/wsdl/http/=${srv.pkg}.http, http://schemas.xmlsoap.org/wsdl/=${srv.pkg}.wsdl“

我试图让所有生成的代码在我的${srv.pkg}结构下生成,但是org.w3代码仍然在它自己的目录结构下生成,并且我的命名空间映射被忽略了。

我哪里出问题了?

EN

回答 1

Stack Overflow用户

发布于 2017-02-07 15:49:52

我终于成功了。我查看了生成源文件的内容,发现它描述了生成文件的实际命名空间。因此,我刚刚将名称空间(http://www.w3.org/2004/06/xmlmime)添加到映射中,现在它运行良好。

因此,最后的操作名称空间映射是:

代码语言:javascript
复制
    <property name="srv.mappings" value="http://www.elster-eis.com/ImportExport=${srv.pkg},http://www.w3.org/2004/06/xmlmime=${srv.pkg}.xmlmime,http://schemas.xmlsoap.org/soap/encoding/=${srv.pkg}.soapenc" />

在这样做之后,生成的源现在在其标题中显示了这一点:

代码语言:javascript
复制
/*
 * An XML attribute type.
 * Localname: contentType
 * Namespace: http://www.w3.org/2004/06/xmlmime
 * Java type: com.csa.webservice.mas.xmlmime.ContentTypeAttribute
 *
 * Automatically generated - do not modify.
 */
package com.csa.webservice.mas.xmlmime;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42092865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档