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&quo...
| <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-w...
| <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#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...