Cannot find port in wsdl (need help)
grdzeli_kaci May 3, 2007 5:33 AMhi all,
am trying to resolve this problem for a week,
could anybody help me please ?
i download jbossws 1.2.1GA
there is example and i am trying to run it.
1.EndpointInterface
import java.rmi.Remote;
import java.rmi.RemoteException;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
/**
* Test the JSR-181 annotation: javax.jws.WebService
* This interface is only used in the client deployment.
*
* @author Thomas.Diesler@jboss.org
* @since 29-Apr-2005
*/
@WebService
@SOAPBinding(style = Style.RPC)
public interface EndpointInterface extends Remote
{
String echo(String input) throws RemoteException;
}
2. EJB3RemoteInterface
import java.rmi.RemoteException;
public interface EJB3RemoteInterface extends EndpointInterface{
String echo(String input) throws RemoteException;
}
3. EJB3Bean02
import java.rmi.RemoteException;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import org.jboss.annotation.ejb.RemoteBinding;
import org.jboss.ws.annotation.WebContext;
/**
* Test the JSR-181 javax.jws.WebService annotation on an EJB3 endpoint.
*
* Uses the wsdlLocation attribute.
*
* @author Thomas.Diesler@jboss.org
* @since 29-Apr-2005
*/
@WebService(
endpointInterface="mypackage.EndpointInterface",
portName = "EJB3RemoteInterfacePort",
name = "mypackage.EndpointInterface",
targetNamespace = "http://org.jboss.ws/samples/jsr181ejb",
serviceName = "EJB3Bean02",
wsdlLocation = "WEB-INF/wsdl/EJB3Bean02.wsdl")
@WebContext(contextRoot = "/jaxws-samples-webservice02-ejb3", urlPattern = "/*")
@SOAPBinding(style = SOAPBinding.Style.RPC)
@Remote(EJB3RemoteInterface.class)
@RemoteBinding(jndiBinding = "/ejb3/EJB3EndpointInterface")
@Stateless
public class EJB3Bean02 implements EJB3RemoteInterface {
@WebMethod
public String echo(String input)throws RemoteException {
System.out.println("Reseive = " + input);
return input + " - Reseived";
}
}
after this i tryed to generate wsdl from this class and i got files like this:
1.EJB3Bean02.wsdl
<?xml version="1.0" encoding="UTF-8"?> <definitions name='EJB3Bean02' targetNamespace='urn:mypackage' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='urn:mypackage' xmlns:xsd='http://www.w3.org/2001/XMLSchema'> <types/> <message name='EJB3RemoteInterface_echo'> <part name='String_1' type='xsd:string'/> </message> <message name='EJB3RemoteInterface_echoResponse'> <part name='result' type='xsd:string'/> </message> <portType name='EJB3RemoteInterface'> <operation name='echo' parameterOrder='String_1'> <input message='tns:EJB3RemoteInterface_echo'/> <output message='tns:EJB3RemoteInterface_echoResponse'/> </operation> </portType> <binding name='EJB3RemoteInterfaceBinding' type='tns:EJB3RemoteInterface'> <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/> <operation name='echo'> <soap:operation soapAction=''/> <input> <soap:body namespace='urn:mypackage' use='literal'/> </input> <output> <soap:body namespace='urn:mypackage' use='literal'/> </output> </operation> </binding> <service name='EJB3Bean02'> <port binding='tns:EJB3RemoteInterfaceBinding' name='EJB3RemoteInterfacePort'> <soap:address location='REPLACE_WITH_ACTUAL_URL'/> </port> </service> </definitions>
2.jaxrpc-mapping.xml
<?xml version='1.0' encoding='UTF-8'?><java-wsdl-mapping version='1.1' xmlns='http://java.sun.com/xml/ns/j2ee' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_jaxrpc_mapping_1_1.xsd'> <package-mapping> <package-type>mypackage</package-type> <namespaceURI>urn:mypackage.types</namespaceURI> </package-mapping> <service-interface-mapping> <service-interface>mypackage.EJB3Bean02</service-interface> <wsdl-service-name xmlns:serviceNS='urn:mypackage'>serviceNS:EJB3Bean02</wsdl-service-name> <port-mapping> <port-name>EJB3RemoteInterfacePort</port-name> <java-port-name>EJB3RemoteInterfacePort</java-port-name> </port-mapping> </service-interface-mapping> <service-endpoint-interface-mapping> <service-endpoint-interface>mypackage.EJB3RemoteInterface</service-endpoint-interface> <wsdl-port-type xmlns:portTypeNS='urn:mypackage'>portTypeNS:EJB3RemoteInterface</wsdl-port-type> <wsdl-binding xmlns:bindingNS='urn:mypackage'>bindingNS:EJB3RemoteInterfaceBinding</wsdl-binding> <service-endpoint-method-mapping> <java-method-name>echo</java-method-name> <wsdl-operation>echo</wsdl-operation> <method-param-parts-mapping> <param-position>0</param-position> <param-type>java.lang.String</param-type> <wsdl-message-mapping> <wsdl-message xmlns:wsdlMsgNS='urn:mypackage'>wsdlMsgNS:EJB3RemoteInterface_echo</wsdl-message> <wsdl-message-part-name>String_1</wsdl-message-part-name> <parameter-mode>IN</parameter-mode> </wsdl-message-mapping> </method-param-parts-mapping> <wsdl-return-value-mapping> <method-return-value>java.lang.String</method-return-value> <wsdl-message xmlns:wsdlMsgNS='urn:mypackage'>wsdlMsgNS:EJB3RemoteInterface_echoResponse</wsdl-message> <wsdl-message-part-name>result</wsdl-message-part-name> </wsdl-return-value-mapping> </service-endpoint-method-mapping> </service-endpoint-interface-mapping> </java-wsdl-mapping>
3.web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"> <servlet> <servlet-name>/ejb3/EJB3EndpointInterface</servlet-name> <servlet-class>mypackage.EJB3Bean02</servlet-class> </servlet> <servlet-mapping> <servlet-name>/ejb3/EJB3EndpointInterface</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
4.webservices.xml
<webservices version='1.1' xmlns='http://java.sun.com/xml/ns/j2ee' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd'> <webservice-description> <webservice-description-name>EJB3Bean02</webservice-description-name> <wsdl-file>META-INF/wsdl/EJB3Bean02.wsdl</wsdl-file> <jaxrpc-mapping-file>META-INF/jaxrpc-mapping.xml</jaxrpc-mapping-file> <port-component> <port-component-name>EJB3RemoteInterfacePort</port-component-name> <wsdl-port xmlns:portNS='urn:mypackage'>portNS:EJB3RemoteInterfacePort</wsdl-port> <service-endpoint-interface>mypackage.EJB3RemoteInterface</service-endpoint-interface> <service-impl-bean> <ejb-link>/ejb3/EJB3EndpointInterface</ejb-link> </service-impl-bean> </port-component> </webservice-description> </webservices>
after all when i tried to deploy this project i got an error :
13:23:22,998 INFO [Ejb3Deployment] EJB3 deployment time took: 19
13:23:23,426 ERROR [ServiceEndpointDeployer] Cannot create service endpoint
org.jboss.ws.WSException: Cannot find port in wsdl: {http://org.jboss.ws/samples/jsr181ejb}EJB3RemoteInterfacePort
at org.jboss.ws.metadata.builder.MetaDataBuilder.replaceAddressLocation(MetaDataBuilder.java:378)
at org.jboss.ws.metadata.builder.jaxws.JAXWSWebServiceMetaDataBuilder.buildWebServiceMetaData(JAXWSWebServiceMetaDataBuilder.java:170)
at org.jboss.ws.metadata.builder.jaxws.JAXWSServerMetaDataBuilder.setupProviderOrWebService(JAXWSServerMetaDataBuilder.java:49)
at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilderEJB3.buildMetaData(JAXWSMetaDataBuilderEJB3.java:77)
at org.jboss.ws.core.server.ServiceEndpointDeployer.create(ServiceEndpointDeployer.java:92)
at org.jboss.ws.integration.jboss42.DeployerInterceptor.createServiceEndpoint(DeployerInterceptor.java:127)
at org.jboss.ws.integration.jboss42.DeployerInterceptorEJB.createServiceEndpoint(DeployerInterceptorEJB.java:43)
at org.jboss.ws.integration.jboss42.DeployerInterceptor.create(DeployerInterceptor.java:78)
at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.create(SubDeployerInterceptorSupport.java:180)
at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:91)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy44.create(Unknown Source)
at org.jboss.deployment.MainDeployer.create(MainDeployer.java:953)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:807)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy6.deploy(Unknown Source)
at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)
13:23:23,427 ERROR [ServiceEndpointPublisher] Cannot obtain waURL for: WSTest.jar
13:23:23,427 ERROR [MainDeployer] Could not create deployment: file:/export/home/jboss/jboss-4.0.4.GA/server/all/deploy/WSTest.jar
org.jboss.deployment.DeploymentException: Cannot create service endpoint; - nested throwable: (org.jboss.ws.WSException: Cannot find port in wsdl: {http://org.jboss.ws/samples/jsr181ejb}EJB3RemoteInterfacePort)
at org.jboss.deployment.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:53)
at org.jboss.ws.integration.jboss42.DeployerInterceptor.create(DeployerInterceptor.java:83)
at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.create(SubDeployerInterceptorSupport.java:180)
at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:91)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy44.create(Unknown Source)
at org.jboss.deployment.MainDeployer.create(MainDeployer.java:953)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:807)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy6.deploy(Unknown Source)
at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)
Caused by: org.jboss.ws.WSException: Cannot find port in wsdl: {http://org.jboss.ws/samples/jsr181ejb}EJB3RemoteInterfacePort
at org.jboss.ws.metadata.builder.MetaDataBuilder.replaceAddressLocation(MetaDataBuilder.java:378)
at org.jboss.ws.metadata.builder.jaxws.JAXWSWebServiceMetaDataBuilder.buildWebServiceMetaData(JAXWSWebServiceMetaDataBuilder.java:170)
at org.jboss.ws.metadata.builder.jaxws.JAXWSServerMetaDataBuilder.setupProviderOrWebService(JAXWSServerMetaDataBuilder.java:49)
at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilderEJB3.buildMetaData(JAXWSMetaDataBuilderEJB3.java:77)
at org.jboss.ws.core.server.ServiceEndpointDeployer.create(ServiceEndpointDeployer.java:92)
at org.jboss.ws.integration.jboss42.DeployerInterceptor.createServiceEndpoint(DeployerInterceptor.java:127)
at org.jboss.ws.integration.jboss42.DeployerInterceptorEJB.createServiceEndpoint(DeployerInterceptorEJB.java:43)
at org.jboss.ws.integration.jboss42.DeployerInterceptor.create(DeployerInterceptor.java:78)
... 28 more
can anybody help me, what i did incorrect ???
Regards,
Paata