Hi,
My comment inline
On 2010-1-15, at 上午3:16, Chris Hatton wrote:
Hey everyone-
Been fighting with this for a while now, but I'm having problems
accessing
my service from SoapUI. I'm using an open standard WSDL contract and
attempting to build out the service using CXF (2.0.9) and deploying on
Servicemix (3.3.1).
I've tinkered for some time with the different namespaces, service
names,
etc but haven't found the winning combo yet. Am I correct in
understanding
that this is a problem mapping my SOAP call to my External service?
Or is
this a problem getting from the External to the Internal service?
Here's my SOAP fault:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring><![CDATA[Could not find route for exchange:
InOut[
id: ID:127.0.1.1-1262db9eaff-20:3
status: Active
role: provider
interface: {
http://www.imsglobal.org/services/gms/wsdl/imsGroupManAbstractSync_v1p0
}GroupManagementServiceSync
service: {
http://www.imsglobal.org/services/gms/wsdl/
imsGroupManServiceSync_v1p0}GroupManagementServiceSync
operation: {
http://www.imsglobal.org/services/gms/wsdl/imsGroupManAbstractSync_v1p0
}readGroup
in: <?xml version="1.0" encoding="UTF-8"?>
<jbi:message xmlns:jbi="http://java.sun.com/xml/ns/jbi/wsdl-11-
wrapper"
xmlns:msg="
http://www.imsglobal.org/services/gms/wsdl/imsGroupManAbstractSync_v1p0
"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" name="readGroupRequest"
type="msg:readGroupRequest" version="1.0">
...
</jbi:message>
...
</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Some warnings from Servicemix:
WARN - DefaultBroker - ServiceName ({
http://www.imsglobal.org/services/gms/wsdl/
imsGroupManServiceSync_v1p0}GroupManagementServiceSync)
specified for routing, but can't find it registered
WARN - DefaultBroker - InterfaceName ({
http://www.imsglobal.org/services/gms/wsdl/imsGroupManAbstractSync_v1p0
}GroupManagementServiceSync)
specified for routing, but can't find any matching components
Relevant WSDL:
<wsdl:service name = "GroupManagementServiceSync">
<wsdl:port name = "GroupManagementServiceSyncSoap" binding =
"tns:GroupManagementServiceSyncSoap">
<soap:address location = "http://localhost:8193/GroupService/
"/>
</wsdl:port>
</wsdl:service>
My xbean.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
xmlns:xsi="http://http://www.w3.org/2001/XMLSchema-instance"
xmlns:imsGroup="
http://www.imsglobal.org/services/gms/wsdl/
imsGroupManServiceSync_v1p0"
xmlns:absg="
http://www.imsglobal.org/services/gms/wsdl/imsGroupManAbstractSync_v1p0
"
xmlns:exampleNamespace="http://example.com/exampleService"
xsi:schemaLocation="http://servicemix.apache.org/cxfbc/1.0
http://servicemix.apache.org/schema/servicemix-cxfbc-3.2.3.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<cxfbc:consumer
wsdl="classpath:imsGroupManServiceSync_v1p0.wsdl"
targetService="imsGroup:GroupManagementServiceSync"
targetInterface="absg:GroupManagementServiceSync"
/>
</beans>
My SEI:
@WebServiceClient(name = "GroupManagementServiceSync",
wsdlLocation = "...",
targetNamespace = "
http://www.imsglobal.org/services/gms/wsdl/
imsGroupManServiceSync_v1p0")
public class GroupManagementServiceSync extends Service {
This shouldn't be your SEI, this is client factory from which you can
get your client proxy, it's used on client side.
Your SEI should be a java interface with @WebService annotation, but
not @WebServiceClient annotation, generally the SEI class name should
be same as the portType name defined in your wsdl.
I believe this is the root cause of the error you encounter.
Freeman
And my ServiceImpl:
@WebService(
targetNamespace = "
http://www.imsglobal.org/services/gms/wsdl/
imsGroupManServiceSync_v1p0",
serviceName = "GroupManagementServiceSync",
name = "GroupManagementServiceSync")
endpointInterface
=
"org
.imsglobal
.services
.gms.wsdl.imsgroupmanabstractsync_v1p0.GroupManagementServiceSync"
)
public class ImsGroupImpl implements GroupManagementServiceSync {
public void readGroup(ReadGroupRequest parameters,
SyncRequestHeaderInfo headerInfoRequest,
Holder<ReadGroupResponse> response,
Holder<SyncResponseHeaderInfo> headerInfoResponse) {
...
}
Any help is greatly appreciated!
Thanks!
-Chris Hatton
--
Freeman Fang
------------------------
Open Source SOA: http://fusesource.com