[JAVA][JAX-WS]WsServlet tries to load a non-existing class
Hi all,
Ik ben wat aan het testen met JAX-WS met een document/literal service definition. Zie hieronder:
Het doel van deze test is het binden van extern aangeleverde messages naar wsdl:operations. De code generatie gaat goed, de volgende files worden gegenereerd:
Dit lijkt er goed uit te zien, alle message bindings(EquipmentError, EquipmentWarning), poprt bindings (SOAPMessagingPortType) en service bindings (SOAPMessagingService) worden gegenereerd. De WS-I Basic Profile conformance tools bevestigen dat deze definitie voldoet aan de Basic profile.
Echter, wanneer ik de service start in een Tomcat 5.5 omgeving wordt de volgende fout melding getoond:
Ik kan deze fout niet verklaren omdat er bij document /literal geen sprake is van een ProcessEquipmentError element (dus ook geen binding), zie ook het voorbeeld request hieronder (gegenereerd met SoapUI):
Welke Webservice expert kan mij op de goede web helpen?
Hi all,
Ik ben wat aan het testen met JAX-WS met een document/literal service definition. Zie hieronder:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:asmb="http://api.mycompany.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://api.mycompany.com" name="SOAPMessaging"> <types> <xsd:schema> <xsd:import namespace="http://api.mycompany.com" schemaLocation="EquipmentError.xsd"/> <xsd:import namespace="http://api.mycompany.com" schemaLocation="EquipmentWarning.xsd"/> </xsd:schema> </types> <message name="EquipmentErrorMessage"> <part name="message" element="asmb:EquipmentError"/> </message> <message name="EquipmentWarningMessage"> <part name="message" element="asmb:EquipmentWarning"/> </message> <portType name="SOAPMessagingPortType"> <operation name="processEquipmentError"> <input message="asmb:EquipmentErrorMessage"/> </operation> <operation name="processEquipmentWarning"> <input message="asmb:EquipmentWarningMessage"/> </operation> </portType> <binding name="SOAPMessagingPortBinding" type="asmb:SOAPMessagingPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="processEquipmentError"> <soap:operation/> <input> <soap:body use="literal"/> </input> </operation> <operation name="processEquipmentWarning"> <soap:operation/> <input> <soap:body use="literal"/> </input> </operation> </binding> <service name="SOAPMessagingService"> <port name="SOAPMessagingPort" binding="asmb:SOAPMessagingPortBinding"> <soap:address location="http://localhost"/> </port> </service> </definitions> |
Het doel van deze test is het binden van extern aangeleverde messages naar wsdl:operations. De code generatie gaat goed, de volgende files worden gegenereerd:
code:
1
2
3
4
5
6
7
| com.mycompany.api |-EquipmentError |-EquipmentWarning |-ObjectFactory |-package-info |-SOAPMessagingPortType |-SOAPMessagingService |
Dit lijkt er goed uit te zien, alle message bindings(EquipmentError, EquipmentWarning), poprt bindings (SOAPMessagingPortType) en service bindings (SOAPMessagingService) worden gegenereerd. De WS-I Basic Profile conformance tools bevestigen dat deze definitie voldoet aan de Basic profile.
Echter, wanneer ik de service start in een Tomcat 5.5 omgeving wordt de volgende fout melding getoond:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| SEVERE: WSSERVLET11: failed to parse runtime descriptor: class: com.mycompany.ap
i.jaxws.ProcessEquipmentError could not be found
class: com.mycompany.api.jaxws.ProcessEquipmentError could not be found
at com.sun.xml.ws.modeler.RuntimeModeler.getClass(RuntimeModeler.java:26
9)
at com.sun.xml.ws.modeler.RuntimeModeler.processDocWrappedMethod(Runtime
Modeler.java:558)
at com.sun.xml.ws.modeler.RuntimeModeler.processMethod(RuntimeModeler.ja
va:505)
at com.sun.xml.ws.modeler.RuntimeModeler.processClass(RuntimeModeler.jav
a:353)
at com.sun.xml.ws.modeler.RuntimeModeler.buildRuntimeModel(RuntimeModele
r.java:249)
at com.sun.xml.ws.server.RuntimeEndpointInfo.createSEIModel(RuntimeEndpo
intInfo.java:168)
at com.sun.xml.ws.server.RuntimeEndpointInfo.init(RuntimeEndpointInfo.ja
va:315)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.create
ModelAndMetadata(WSServletContextListener.java:197)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contex
tInitialized(WSServletContextListener.java:117)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContex
t.java:3729)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4
187)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:73
9)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.jav
a:904)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.j
ava:867)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474
)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java
:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
eSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442
)
at org.apache.catalina.core.StandardService.start(StandardService.java:4
50)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:709
)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432) |
Ik kan deze fout niet verklaren omdat er bij document /literal geen sprake is van een ProcessEquipmentError element (dus ook geen binding), zie ook het voorbeeld request hieronder (gegenereerd met SoapUI):
XML:
1
2
3
4
5
6
7
8
9
| <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:api="http://api.mycompany.com"> <soapenv:Header/> <soapenv:Body> <api:EquipmentError dateTime="?" errorId="?" errorInstanceId="?" laneList="?" zoneList="?"> <!--Optional:--> <Extensions>?</Extensions> </api:EquipmentError> </soapenv:Body> </soapenv:Envelope> |
Welke Webservice expert kan mij op de goede web helpen?
Pentium 233MHz MMX + Diamond Monster 3D 3DFX Voodoo II