[jboss-user] [JBossWS] - Re: WS-RM Exception: cannot be cast to org.jboss.ws.core.Stu

karypid do-not-reply at jboss.com
Mon Aug 11 05:18:24 EDT 2008


Understood. However, I can't get it to work. When I add the WSDL file to the META-INF/wsdl folder of my EJB jar (I use a stateless session bean to implement the web service and the "start from WSDL" approach via wsconsume), JBoss publishes the web service using a file:// URL. For instance, the following SLSB (notice that the PolicyFile annotation is commented out):

@Stateless
  | @WebService(serviceName = "StationsService", wsdlLocation = "META-INF/wsdl/StationsService.wsdl",
  |     targetNamespace = "http://www.armoniq.com/StationsService/",
  |     endpointInterface = "com.armoniq.stationsservice.StationsServicePortType"
  | )
  | @EndpointConfig(configFile = "META-INF/wsrm-jaxws-endpoint-config.xml", configName = "Standard WSRM Endpoint")
  | //@PolicyAttachment(@Policy(policyFileLocation = "META-INF/wsrm-exactly-once-in-order-policy.xml", scope = PolicyScopeLevel.WSDL_BINDING))
  | public class StationsService implements StationsServicePortType {
  | 	// Logger logger = Logger
  | 	// .getLogger(StationsService.class.getClass().getName());
  | 
  | 	public void ping(String in) {
  | 		System.out.println("Ping received with text: " + in);
  | 		// logger.log(Level.INFO, "Ping received with text: " + in);
  | 	}
  | }

Causes JBoss to publish this WSDL:

<wsdl:definitions name="StationsService"
  |     targetNamespace="http://www.armoniq.com/StationsService/"
  |     xmlns:echoes="http:/www.armoniq.com/echoes/2008/core"
  |     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
  |     xmlns:tns="http://www.armoniq.com/StationsService/" 
  |     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
  |     xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
  |     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  |  <wsdl:types>
  |   <xsd:schema targetNamespace="http://www.armoniq.com/StationsService/">
  |    <xsd:import namespace="http:/www.armoniq.com/echoes/2008/core"
  |            schemaLocation="http://localhost:8080/myrm.ear-myrm.ws.impl/StationsService?wsdl&resource=myrm.base.xsd"/>
  |    <xsd:element name="ping">
  |     <xsd:complexType>
  |      <xsd:sequence>
  |       <xsd:element name="in" type="xsd:string"/>
  |      </xsd:sequence>
  |     </xsd:complexType>
  |    </xsd:element>
  |   </xsd:schema>
  |  </wsdl:types>
  |  <wsdl:message name="pingRequest">
  |   <wsdl:part element="tns:ping" name="parameters"/>
  |  </wsdl:message>
  |  <wsdl:portType name="StationsServicePortType">
  |   <wsdl:operation name="ping">
  |    <wsdl:input message="tns:pingRequest"/>
  |   </wsdl:operation>
  |  </wsdl:portType>
  |  <wsdl:binding name="StationsServiceSOAP" type="tns:StationsServicePortType">
  |   <wsp:PolicyReference URI="#wsrm11policy"/>
  |   <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
  |   <wsdl:operation name="ping">
  |    <soap:operation soapAction="http://www.armoniq.com/StationsService/fetchSchedule"/>
  |    <wsdl:input>
  |     <soap:body use="literal"/>
  |    </wsdl:input>
  |   </wsdl:operation>
  |  </wsdl:binding>
  |  <wsdl:service name="StationsService">
  |   <wsdl:port binding="tns:StationsServiceSOAP" name="StationsServicePort">
  |    <soap:address location="file://localhost:8080/myrm.ear-myrm.ws.impl/StationsService"/>
  |   </wsdl:port>
  |  </wsdl:service>
  |  <wsp:UsingPolicy/>
  |  <wsp:Policy wsu:Id="wsrm11policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  |   <wsp:All>
  |    <wsp:ExactlyOne>
  |     <wsp:All>
  |      <ns1:RMAssertion xmlns:ns1="http://docs.oasis-open.org/ws-rx/wsrmp/200702"/>
  |      <ns2:UsingAddressing xmlns:ns2="http://www.w3.org/2006/05/addressing/wsdl"/>
  |     </wsp:All>
  |    </wsp:ExactlyOne>
  |   </wsp:All>
  |  </wsp:Policy>
  | </wsdl:definitions>

Notice the <soap:address> tag that uses file:// as a protocol.

Even in the jbossws management console (http://localhost:8080/jbossws/services) the link uses this address and clicking on it does not work. You have to copy the link from the web page, paste it to the address bar of the browser and replace file: with http: to get to the (incorrect) WSDL.

I am using JBoss 4.2.3 and JBossWS 3.0.2.


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4169812#4169812

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4169812



More information about the jboss-user mailing list