我正在尝试使用New创建一个Web服务 - > Netbeans 7.1.2中WSDL的Web服务。
我继续使用XML spy创建了一个WSDL。这是我创建的基本WSDL:
<wsdl:definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://www.w3.org/ns/ws-policy"
xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://planningservice.ohs.com/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://docs.oasis-open.org/wsn/t-1" xmlns:ns1="http://www.isotc211.org/2005/gco" xmlns:ns2="http://www.isotc211.org/2005/gmd" xmlns:ns3="http://www.isotc211.org/2005/gsr" xmlns:ns4="http://www.isotc211.org/2005/gss" xmlns:ns5="http://www.isotc211.org/2005/gts" xmlns:ns6="http://www.opengis.net/gml/3.2" xmlns:ns7="http://www.opengis.net/ows/1.1" xmlns:ns8="http://www.opengis.net/sps/2.0" xmlns:ns9="http://www.opengis.net/swe/2.0" xmlns:ns10="http://www.opengis.net/swes/2.0" xmlns:ns11="http://www.w3.org/2005/08/addressing" name="PlanningService" targetNamespace="http://planningservice.ohs.com/">
<wsdl:import namespace="http://www.opengis.net/sps/2.0" location="http://schemas.opengis.net/sps/2.0/spsGetFeasibility.xsd"/>
<wsdl:types>
<xsd:schema>
<xsd:import namespace="http://ps.ca"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="GetFeasibility">
<wsdl:part name="parameters" type="ns8:GetFeasibilityType"/>
</wsdl:message>
<wsdl:message name="GetFeasibilityResponse">
<wsdl:part name="parameters" type="ns8:GetFeasibilityResponseType"/>
</wsdl:message>
<wsdl:portType name="PlanningService">
<wsdl:operation name="GetFeasibility">
<wsdl:input message="tns:GetFeasibility" wsam:Action="http://planningservice.ohs.com/PlanningService/getFeasibility"/>
<wsdl:output message="tns:GetFeasibilityResponse" wsam:Action="http://planningservice.ohs.com/PlanningService/getFeasibilityResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="PlanningSerivcePortBinding" type="tns:PlanningService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetFeasibility">
<soap:operation soapAction="' '"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="PlanningSerivce">
<wsdl:port name="PlanningService" binding="tns:PlanningSerivcePortBinding">
<soap:address location="http://localhost:8080/PlanningService/"/>
</wsdl:port>
</wsdl:service>
当我尝试使用上面的内容时,“来自WSDL的新Web服务”向导说“指定的WSDL文件中没有服务。”
如果我没有指定location属性,请执行以下操作:
<wsdl:service name="PlanningSerivce">
<wsdl:port name="PlanningService" binding="tns:PlanningSerivcePortBinding">
<soap:address/>
</wsdl:port>
</wsdl:service>
我没有该通知,但在创建Web服务期间,我收到一条错误消息,指出该属性已丢失。
所以我的问题是我在location属性中放置了什么来让Netbeans认识到已经定义了一个服务,因为它没有部署在任何地方!
全部谢谢!
〜d
答案 0 :(得分:0)
提供的WSDL文档并不完全有效。
第一个问题是文档样式的声明,但是rpc样式中的消息声明。 Rpc使用根据'type'定义的消息部分。文档使用根据'元素'定义的消息部分。我查看了导入到WSDL中的XSD,发现在那里定义了'GetFeasibility'和'GetFeasibilityResponse'元素。因此,将wsdl:message节点更改为
<wsdl:message name="GetFeasibility">
<wsdl:part name="parameters" element="ns8:GetFeasibility"/>
</wsdl:message>
<wsdl:message name="GetFeasibilityResponse">
<wsdl:part name="parameters" element="ns8:GetFeasibilityResponse"/>
</wsdl:message>
通过使消息定义与文档样式服务一致来提供帮助。 关于wsdl构造w.r.t,http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/有一篇很好的文章。声明的样式。
下一个问题是架构导入。 wsdl:import语句有一些特殊限制。通常,拉入模式的适当位置是wsdl:types部分。如果您使用类似
的内容 <wsdl:types>
<xsd:schema>
<xsd:import namespace="http://www.opengis.net/sps/2.0"
schemaLocation="http://schemas.opengis.net/sps/2.0/spsGetFeasibility.xsd"/>
<xsd:import namespace="http://ps.ca"/>
</xsd:schema>
</wsdl:types>
(不确定ps.ca导入的值),相关类型可用于wsdl导入机制。 wsdl导入的写入位于http://scn.sap.com/people/kevin.liu/blog/2004/06/28/a-note-on-wsdl-and-xsd-imports
一旦进行了这些修改,wsimport仍然在opengis.net的支持模式中看到了名称冲突形式的错误,但希望这足以让你有点移动我们的项目,你可以专注于名称碰撞而不是与wsdl建筑作斗争。