解决cxf+bboss发布的webservice缺少<wsdl:types>和<wsdl:message>标签的问题
2016-12-23 11:25
423 查看
cxf+bboss发布webservice服务(cxf+bboss发布webservice服务方法请参考文档:
bbossgroups webservice引擎使用方法),服务发布成功,查看其wsdl文件的时候却缺少<wsdl:types>和<wsdl:message>标签,例如:
Xml代码
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions name="MaterialWServiceImplService" targetNamespace="http://impl.webservice.material.mms.sany.com/" xmlns:ns1="http://webservice.material.mms.sany.com/" xmlns:ns2="http://schemas.xmlsoap.org/wsdl/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://impl.webservice.material.mms.sany.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:import location="http://10.8.135.224:8081/SanyMMS/cxfservices/queryTaskList?wsdl=MaterialWService.wsdl" namespace="http://webservice.material.mms.sany.com/" />
- <wsdl:binding name="MaterialWServiceImplServiceSoapBinding" type="ns1:MaterialWService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="queryAwaitTaskByUserNum">
<soap:operation soapAction="" style="document" />
- <wsdl:input name="queryAwaitTaskByUserNum">
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output name="queryAwaitTaskByUserNumResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="MaterialWServiceImplService">
- <wsdl:port binding="tns:MaterialWServiceImplServiceSoapBinding" name="MaterialWServiceImplPort">
<soap:address location="http://10.8.135.224:8081/SanyMMS/cxfservices/queryTaskList" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
认真看发布后的wsdl文件,发现多了<wsdl:import>标签:
Xml代码
<wsdl:import location="http://10.8.135.224:8081/SanyMMS/cxfservices/queryTaskList?wsdl=MaterialWService.wsdl" namespace="http://webservice.material.mms.sany.com/" />
将<wsdl:import>标签中的location拿出去在浏览器中打开,里面是“丢失”的两个标签,这时候就发现其实并不是丢失了,而是包含在了<wsdl:import>标签内
为什么会包含在了<wsdl:import>标签内?仔细查看生成的wsdl,发现<wsdl:definitions>标签内的targetNamespace属性和<wsdl:import>中namespace属性的值不同,这就是原因所在,发布服务时,接口类和服务实现类的@Webservice注解中没有指定targetNamespace为一个名称或者没有指定时(cxf发布服务时会默认将类和接口的包路径反转,然后作为targetNamespace的值),就会导致上述现象,最终解决方案:
1,将接口类和实现类放在同一个包下,问题即可解决
2,将接口类和实现类中的注解中加入命名空间属性配置,@WebService(targetNamespace="XXXXX"),两个配置值保持一致即可
实现类:
Java代码
package org.frameworkset.web.ws;
import javax.jws.WebService;
/**
* <p>Title: WSServiceImpl.java</p>
* <p>Description: </p>
* <p>bboss workgroup</p>
* <p>Copyright (c) 2008</p>
* @Date 2011-4-24
* @author biaoping.yin
* @version 1.0
*/
@WebService(targetNamespace="org.frameworkset.web.ws")
public class WSServiceImpl implements WSService{
public String sayHello(String duoduo) {
if(duoduo == null)
return "";
else
return duoduo;
}
}
接口定义:
Java代码
package org.frameworkset.web.ws;
import javax.jws.WebService;
/**
* <p>Title: WSService.java</p>
* <p>Description: </p>
* <p>bboss workgroup</p>
* <p>Copyright (c) 2008</p>
* @Date 2011-4-24
* @author biaoping.yin
* @version 1.0
*/
@WebService(targetNamespace="org.frameworkset.web.ws")
public interface WSService {
public String sayHello(String duoduo)
;
}
bbossgroups webservice引擎使用方法),服务发布成功,查看其wsdl文件的时候却缺少<wsdl:types>和<wsdl:message>标签,例如:
Xml代码
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions name="MaterialWServiceImplService" targetNamespace="http://impl.webservice.material.mms.sany.com/" xmlns:ns1="http://webservice.material.mms.sany.com/" xmlns:ns2="http://schemas.xmlsoap.org/wsdl/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://impl.webservice.material.mms.sany.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:import location="http://10.8.135.224:8081/SanyMMS/cxfservices/queryTaskList?wsdl=MaterialWService.wsdl" namespace="http://webservice.material.mms.sany.com/" />
- <wsdl:binding name="MaterialWServiceImplServiceSoapBinding" type="ns1:MaterialWService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="queryAwaitTaskByUserNum">
<soap:operation soapAction="" style="document" />
- <wsdl:input name="queryAwaitTaskByUserNum">
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output name="queryAwaitTaskByUserNumResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="MaterialWServiceImplService">
- <wsdl:port binding="tns:MaterialWServiceImplServiceSoapBinding" name="MaterialWServiceImplPort">
<soap:address location="http://10.8.135.224:8081/SanyMMS/cxfservices/queryTaskList" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
认真看发布后的wsdl文件,发现多了<wsdl:import>标签:
Xml代码
<wsdl:import location="http://10.8.135.224:8081/SanyMMS/cxfservices/queryTaskList?wsdl=MaterialWService.wsdl" namespace="http://webservice.material.mms.sany.com/" />
将<wsdl:import>标签中的location拿出去在浏览器中打开,里面是“丢失”的两个标签,这时候就发现其实并不是丢失了,而是包含在了<wsdl:import>标签内
为什么会包含在了<wsdl:import>标签内?仔细查看生成的wsdl,发现<wsdl:definitions>标签内的targetNamespace属性和<wsdl:import>中namespace属性的值不同,这就是原因所在,发布服务时,接口类和服务实现类的@Webservice注解中没有指定targetNamespace为一个名称或者没有指定时(cxf发布服务时会默认将类和接口的包路径反转,然后作为targetNamespace的值),就会导致上述现象,最终解决方案:
1,将接口类和实现类放在同一个包下,问题即可解决
2,将接口类和实现类中的注解中加入命名空间属性配置,@WebService(targetNamespace="XXXXX"),两个配置值保持一致即可
实现类:
Java代码
package org.frameworkset.web.ws;
import javax.jws.WebService;
/**
* <p>Title: WSServiceImpl.java</p>
* <p>Description: </p>
* <p>bboss workgroup</p>
* <p>Copyright (c) 2008</p>
* @Date 2011-4-24
* @author biaoping.yin
* @version 1.0
*/
@WebService(targetNamespace="org.frameworkset.web.ws")
public class WSServiceImpl implements WSService{
public String sayHello(String duoduo) {
if(duoduo == null)
return "";
else
return duoduo;
}
}
接口定义:
Java代码
package org.frameworkset.web.ws;
import javax.jws.WebService;
/**
* <p>Title: WSService.java</p>
* <p>Description: </p>
* <p>bboss workgroup</p>
* <p>Copyright (c) 2008</p>
* @Date 2011-4-24
* @author biaoping.yin
* @version 1.0
*/
@WebService(targetNamespace="org.frameworkset.web.ws")
public interface WSService {
public String sayHello(String duoduo)
;
}
相关文章推荐
- 解决cxf+spring发布的webservice缺少<wsdl:types>和<wsdl:message>标签的问题
- 解决cxf+spring发布的webservice缺少<wsdl:types>和<wsdl:message>标签的问题
- CXF发布服务,WebService缺少<wsdl:types/><wsdl:message/>标签
- 解决cxf+spring发布的webservice,types,portType和message以import方式导入
- eclipse的jsp文件中option里嵌套<c:if></c:if>标签飘红问题的解决
- 解决<li>标签中<a>和<span>标签对不齐问题
- 解决webApi<Message>An error has occurred.</Message>不能写多个Get方法的问题
- <学习html>第三天笔记-链接标签;锚点定位、<base />标签;遇到标签之间关系的问题及解决方法
- jsp中<a href=""></a>标签传递参数乱码问题解决
- 解决<span>标签内容改变,不能触发方法的问题
- 巧用mybatis 的<foreach>标签的 index 属性解决批量排序值问题
- <c:param> 标签中文乱码问题解决
- js正则:匹配一个html的tagname的开始标签,主要是解决包含&lt;&gt;(正则的效率问题建议不使用)
- 解决<textarea>标签中的文字莫名其妙的居中的问题
- 关于微信小程序<text>标签用flex布局不能居中的问题解决
- 解决node-webkit下使用<audio>标签无法播放音频的问题
- 扫描枪在Android 系统上面扫描的时候缺少一位,<已解决>百度输入法的问题
- CXF实现webservice 解决list<map>类型转换
- mybatis 的<foreach>标签的 index 属性解决批量排序值问题
- 超链接标签<a>缓存问题的解决