CXF プラグインを使用して Grails に SOAP Web サービスを実装しようとしています。私のサービスクラスはとてもシンプルです。
package com.ld.api
import com.ld.domain.*
import javax.jws.*
import grails.converters.XML
class CabinetService {
static transactional = true
static expose=['cxf']
String getCabinetList() {
String list = Cabinet.list()
//return list as XML
return "jim"
}
def serviceMethod() {
println "IN serviceMethod"
"Hello...."
}
}
そして、私はこのWSDLを取得しています:
<wsdl:definitions name="CabinetService" targetNamespace="http://api.ld.com/"><wsdl:types><xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://api.ld.com/"><xsd:element name="serviceMethod" type="tns:serviceMethod"/><xsd:complexType name="serviceMethod"><xsd:sequence/></xsd:complexType><xsd:element name="serviceMethodResponse" type="tns:serviceMethodResponse"/><xsd:complexType name="serviceMethodResponse"><xsd:sequence><xsd:element minOccurs="0" name="return" type="xsd:anyType"/></xsd:sequence></xsd:complexType></xsd:schema></wsdl:types><wsdl:message name="serviceMethodResponse"><wsdl:part element="tns:serviceMethodResponse" name="parameters">
</wsdl:part></wsdl:message><wsdl:message name="serviceMethod"><wsdl:part element="tns:serviceMethod" name="parameters">
</wsdl:part></wsdl:message><wsdl:portType name="CabinetServicePortType"><wsdl:operation name="serviceMethod"><wsdl:input message="tns:serviceMethod" name="serviceMethod">
</wsdl:input><wsdl:output message="tns:serviceMethodResponse" name="serviceMethodResponse">
</wsdl:output></wsdl:operation></wsdl:portType><wsdl:binding name="CabinetServiceSoapBinding" type="tns:CabinetServicePortType"><soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="serviceMethod"><soap:operation soapAction="" style="document"/><wsdl:input name="serviceMethod"><soap:body use="literal"/></wsdl:input><wsdl:output name="serviceMethodResponse"><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="CabinetService"><wsdl:port binding="tns:CabinetServiceSoapBinding" name="CabinetServicePort"><soap:address location="http://localhost:8080/LucanDOCS2013/services/cabinet"/></wsdl:port></wsdl:service></wsdl:definitions>
自動生成された「serviceMethod」は WSDL に含まれますが、getCabinetList() は含まれません。注釈のさまざまな組み合わせを試しましたが、うまくいきませんでした。
私は grails 2.0.3 とバージョン 0.9.0 のプラグインを使用しています。どんな助けでも大歓迎です。