does not contain port: null

Hi there,

I had deployed 2 web services, one of it is working another one isn't. Both of the web services implementing the same/identical ways. The exception i got it:

service:{http://localhost:8080/}ORMEngineService does not contain port: null

at com.sun.xml.rpc.client.dii.ConfiguredService.portNotFoundException(ConfiguredService.java:139)

at com.sun.xml.rpc.client.dii.ConfiguredService.getPortInfo(ConfiguredService.java:132)

at com.sun.xml.rpc.client.dii.ConfiguredService.getPort(ConfiguredService.java:245)

at com.sun.xml.rpc.client.dii.ConfiguredService.getPort(ConfiguredService.java:152)

at gov.mohr.ems.core.entity.logic.ORMEngineWebServicesTest.test1(ORMEngineWebServicesTest.java:59)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at junit.framework.TestCase.runTest(TestCase.java:154)

at junit.framework.TestCase.runBare(TestCase.java:127)

at junit.framework.TestResult$1.protect(TestResult.java:106)

at junit.framework.TestResult.runProtected(TestResult.java:124)

at junit.framework.TestResult.run(TestResult.java:109)

at junit.framework.TestCase.run(TestCase.java:118)

at junit.framework.TestSuite.runTest(TestSuite.java:208)

at junit.framework.TestSuite.run(TestSuite.java:203)

...

Below are my references:

1. mapping file:

<?xml version="1.0" encoding="UTF-8"?>

<java-wsdl-mapping xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1" 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>gov.mohr.ems.core.entity.logic</package-type>

<namespaceURI>http://localhost:8080/types</namespaceURI>

</package-mapping>

<package-mapping>

<package-type>gov.mohr.ems.core.entity.logic</package-type>

<namespaceURI>http://localhost:8080/</namespaceURI>

</package-mapping>

<service-interface-mapping>

<service-interface>gov.mohr.ems.core.entity.logic.ORMEngineService</service-interface>

<wsdl-service-name xmlns:serviceNS="http://localhost:8080/">serviceNS:ORMEngineService</wsdl-service-name>

<port-mapping>

<port-name>ORMEngineServiceEndpointPort</port-name>

<java-port-name>ORMEngineServiceEndpointPort</java-port-name>

</port-mapping>

</service-interface-mapping>

<service-endpoint-interface-mapping>

<service-endpoint-interface>gov.mohr.ems.core.entity.logic.ORMEngineServiceEndpoint</service-endpoint-interface>

<wsdl-port-type xmlns:portTypeNS="http://localhost:8080/">portTypeNS:ORMEngineServiceEndpoint</wsdl-port-type>

<wsdl-binding xmlns:bindingNS="http://localhost:8080/">bindingNS:ORMEngineServiceEndpointBinding</wsdl-binding>

<service-endpoint-method-mapping>

<java-method-name>executeQuery</java-method-name>

<wsdl-operation>executeQuery</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="http://localhost:8080/">wsdlMsgNS:ORMEngineServiceEndpoint_executeQuery</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="http://localhost:8080/">wsdlMsgNS:ORMEngineServiceEndpoint_executeQueryResponse</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>

2. WSDL file:

<?xml version="1.0" encoding="UTF-8"?>

<definitions name="ORMEngineService" targetNamespace="http://localhost:8080/" xmlns:tns="http://localhost:8080/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<types/>

<message name="ORMEngineServiceEndpoint_executeQuery">

<part name="String_1" type="xsd:string"/></message>

<message name="ORMEngineServiceEndpoint_executeQueryResponse">

<part name="result" type="xsd:string"/></message>

<portType name="ORMEngineServiceEndpoint">

<operation name="executeQuery" parameterOrder="String_1">

<input message="tns:ORMEngineServiceEndpoint_executeQuery"/>

<output message="tns:ORMEngineServiceEndpoint_executeQueryResponse"/></operation></portType>

<binding name="ORMEngineServiceEndpointBinding" type="tns:ORMEngineServiceEndpoint">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>

<operation name="executeQuery">

<soap:operation soapAction=""/>

<input>

<soap:body use="literal" namespace="http://localhost:8080/"/></input>

<output>

<soap:body use="literal" namespace="http://localhost:8080/"/></output></operation></binding>

<service name="ORMEngineService">

<port name="ORMEngineServiceEndpointPort" binding="tns:ORMEngineServiceEndpointBinding">

<soap:address location="REPLACE_WITH_ACTUAL_URL"/></port></service></definitions>

The following are the working copies of the same implmentation:

1. webservices.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--

Document: webservices.xml

Created on : May 11, 2006, 5:36 PM

Author: david

Description:

Web Services Configuration Filefor EJB Container

-->

<webservices 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" version="1.1">

<webservice-description>

<webservice-description-name>PersistenceService</webservice-description-name>

<wsdl-file>META-INF/wsdl/PersistenceService.wsdl</wsdl-file>

<jaxrpc-mapping-file>META-INF/mapping-persistence.xml</jaxrpc-mapping-file>

<port-component>

<port-component-name>PersistencePort</port-component-name>

<wsdl-port>PersistenceServiceEndpointPort</wsdl-port>

<service-endpoint-interface>gov.mohr.ems.core.entity.logic.PersistenceServiceEndpoint</service-endpoint-interface>

<service-impl-bean>

<ejb-link>PersistenceEJB</ejb-link>

</service-impl-bean>

</port-component>

</webservice-description>

<webservice-description>

<webservice-description-name>ORMEngineService</webservice-description-name>

<wsdl-file>META-INF/wsdl/ORMEngineService.wsdl</wsdl-file>

<jaxrpc-mapping-file>META-INF/mapping-ormengine.xml</jaxrpc-mapping-file>

<port-component>

<port-component-name>ORMEnginePort</port-component-name>

<wsdl-port>ORMEngineServiceEndpointPort</wsdl-port>

<service-endpoint-interface>gov.mohr.ems.core.entity.logic.ORMEngineServiceEndpoint</service-endpoint-interface>

<service-impl-bean>

<ejb-link>ORMEngineEJB</ejb-link>

</service-impl-bean>

</port-component>

</webservice-description>

</webservices>

2. ejb-jar.xml

<?xml version="1.0" encoding="UTF-8"?>

<ejb-jar version="2.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://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">

<display-name>Enforcement Management System Backend</display-name>

<enterprise-beans>

<!--<session>

<display-name>WorkflowJAR</display-name>

<ejb-name>WorkflowEJB</ejb-name>

<home>gov.mohr.ems.core.workflow.logic.WorkflowRemoteHome</home>

<remote>gov.mohr.ems.core.workflow.logic.WorkflowRemote</remote>

<ejb-class>gov.mohr.ems.core.workflow.logic.WorkflowBean</ejb-class>

<session-type>Stateless</session-type>

<transaction-type>Container</transaction-type>

<env-entry>

<env-entry-name>ejb/BeanFactoryPath</env-entry-name>

<env-entry-type>java.lang.String</env-entry-type>

<env-entry-value>/META-INF/applicationcontext-ejb.xml</env-entry-value>

</env-entry>

</session>-->

<!--<session>

<display-name>NotificationJAR</display-name>

<ejb-name>NotificationEJB</ejb-name>

<home>gov.mohr.ems.core.notification.logic.NotificationRemoteHome</home>

<remote>gov.mohr.ems.core.notification.logic.NotificationRemote</remote>

<ejb-class>gov.mohr.ems.core.notification.logic.NotificationBean</ejb-class>

<session-type>Stateless</session-type>

<transaction-type>Container</transaction-type>

<env-entry>

<env-entry-name>ejb/BeanFactoryPath</env-entry-name>

<env-entry-type>java.lang.String</env-entry-type>

<env-entry-value>/META-INF/applicationcontext-ejb.xml</env-entry-value>

</env-entry>

</session>-->

<session>

<display-name>ORMEngineJAR</display-name>

<ejb-name>ORMEngineEJB</ejb-name>

<service-endpoint>gov.mohr.ems.core.entity.logic.ORMEngineServiceEndpoint</service-endpoint>

<!--<home>gov.mohr.ems.core.entity.logic.ORMEngineRemoteHome</home>

<remote>gov.mohr.ems.core.entity.logic.ORMEngineRemote</remote>-->

<ejb-class>gov.mohr.ems.core.entity.logic.ORMEngineBean</ejb-class>

<session-type>Stateless</session-type>

<transaction-type>Container</transaction-type>

<env-entry>

<env-entry-name>ejb/BeanFactoryPath</env-entry-name>

<env-entry-type>java.lang.String</env-entry-type>

<env-entry-value>/META-INF/applicationcontext-ejb.xml</env-entry-value>

</env-entry>

</session>

<session>

<display-name>PersistenceJAR</display-name>

<ejb-name>PersistenceEJB</ejb-name>

<service-endpoint>gov.mohr.ems.core.entity.logic.PersistenceServiceEndpoint</service-endpoint>

<!--<home>gov.mohr.ems.core.entity.logic.PersistenceRemoteHome</home>

<remote>gov.mohr.ems.core.entity.logic.PersistenceRemote</remote>-->

<ejb-class>gov.mohr.ems.core.entity.logic.PersistenceBean</ejb-class>

<session-type>Stateless</session-type>

<transaction-type>Container</transaction-type>

<env-entry>

<env-entry-name>ejb/BeanFactoryPath</env-entry-name>

<env-entry-type>java.lang.String</env-entry-type>

<env-entry-value>/META-INF/applicationcontext-ejb.xml</env-entry-value>

</env-entry>

</session>

</enterprise-beans>

<assembly-descriptor>

<!--<container-transaction>

<method>

<ejb-name>WorkflowEJB</ejb-name>

<method-name>*</method-name>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>-->

<!--<container-transaction>

<method>

<ejb-name>NotificationEJB</ejb-name>

<method-name>*</method-name>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>-->

<container-transaction>

<method>

<ejb-name>ORMEngineEJB</ejb-name>

<method-name>*</method-name>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>

<container-transaction>

<method>

<ejb-name>PersistenceEJB</ejb-name>

<method-name>*</method-name>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>

</assembly-descriptor>

</ejb-jar>

3. applicationcontext-ejb.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC"-//SPRING//DTD// BEAN//EN"

"http://www.springframework.org/dtd/spring-beans.dtd">

<!--

Document: applicationcontext-ejb.xml

Created on : April 26, 2006, 9:07 PM

Author: david

Description:

Spring configuration.

-->

<beans default-autowire="byName">

<bean id="sessionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">

<property name="jndiName">

<value>java:hibernate/SessionFactory</value>

</property>

</bean>

<!--<bean id="gov.mohr.ems.core.workflow.logic.Workflow" class="gov.mohr.ems.core.workflow.logic.WorkflowImpl"/>-->

<!--<bean id="gov.mohr.ems.core.notification.logic.Notification" class="gov.mohr.ems.core.notification.logic.NotificationImpl"/>-->

<!-- Backend -->

<bean id="gov.mohr.ems.core.entity.logic.DefaultQueryMethod" class="gov.mohr.ems.core.entity.logic.DefaultQueryMethod"/>

<bean id="gov.mohr.ems.core.entity.logic.ORMEngine" class="gov.mohr.ems.core.entity.logic.ORMEngineImpl">

<property name="queryMethodMap">

<map>

<entry key="CustomerSampleKey">

<value>CustomerSampleClassName</value>

</entry>

</map>

</property>

</bean>

<bean id="gov.mohr.ems.core.entity.logic.Persistence" class="gov.mohr.ems.core.entity.logic.PersistenceImpl"/>

</beans>

4. working copy of mapping file:

<?xml version="1.0" encoding="UTF-8"?>

<java-wsdl-mapping xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1" 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>gov.mohr.ems.core.entity.logic</package-type>

<namespaceURI>http://localhost:8080/types</namespaceURI>

</package-mapping>

<package-mapping>

<package-type>gov.mohr.ems.core.entity.logic</package-type>

<namespaceURI>http://localhost:8080/</namespaceURI>

</package-mapping>

<service-interface-mapping>

<service-interface>gov.mohr.ems.core.entity.logic.PersistenceService</service-interface>

<wsdl-service-name xmlns:serviceNS="http://localhost:8080/">serviceNS:PersistenceService</wsdl-service-name>

<port-mapping>

<port-name>PersistenceServiceEndpointPort</port-name>

<java-port-name>PersistenceServiceEndpointPort</java-port-name>

</port-mapping>

</service-interface-mapping>

<service-endpoint-interface-mapping>

<service-endpoint-interface>gov.mohr.ems.core.entity.logic.PersistenceServiceEndpoint</service-endpoint-interface>

<wsdl-port-type xmlns:portTypeNS="http://localhost:8080/">portTypeNS:PersistenceServiceEndpoint</wsdl-port-type>

<wsdl-binding xmlns:bindingNS="http://localhost:8080/">bindingNS:PersistenceServiceEndpointBinding</wsdl-binding>

<service-endpoint-method-mapping>

<java-method-name>upload</java-method-name>

<wsdl-operation>upload</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="http://localhost:8080/">wsdlMsgNS:PersistenceServiceEndpoint_upload</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="http://localhost:8080/">wsdlMsgNS:PersistenceServiceEndpoint_uploadResponse</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>

5. working copy of WSDL file:

<?xml version="1.0" encoding="UTF-8"?>

<definitions name="PersistenceService" targetNamespace="http://localhost:8080/" xmlns:tns="http://localhost:8080/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<types/>

<message name="PersistenceServiceEndpoint_upload">

<part name="String_1" type="xsd:string"/></message>

<message name="PersistenceServiceEndpoint_uploadResponse">

<part name="result" type="xsd:string"/></message>

<portType name="PersistenceServiceEndpoint">

<operation name="upload" parameterOrder="String_1">

<input message="tns:PersistenceServiceEndpoint_upload"/>

<output message="tns:PersistenceServiceEndpoint_uploadResponse"/></operation></portType>

<binding name="PersistenceServiceEndpointBinding" type="tns:PersistenceServiceEndpoint">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>

<operation name="upload">

<soap:operation soapAction=""/>

<input>

<soap:body use="literal" namespace="http://localhost:8080/"/></input>

<output>

<soap:body use="literal" namespace="http://localhost:8080/"/></output></operation></binding>

<service name="PersistenceService">

<port name="PersistenceServiceEndpointPort" binding="tns:PersistenceServiceEndpointBinding">

<soap:address location="REPLACE_WITH_ACTUAL_URL"/></port></service></definitions>

Anyone has any ideas?

Many thanks!

[23323 byte] By [NeoGigsa] at [2007-10-2 20:40:39]
# 1
In file webservice.xml Replace the"<wsdl-port>PersistenceServiceEndpointPort</wsdl-port>"with "<wsdl-port>ORMEngineServiceEndpointPort</wsdl-port>"Think this will work .--Sonal.
Sonala at 2007-7-13 23:23:51 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 2
Thanks.Sorry but I dun get it, now I need to run 2 webservices, if replace with the later one then I can't access the first one?
NeoGigsa at 2007-7-13 23:23:51 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 3
The "wsdl-port " name in webservice.xml does not match with the port name which is in your wsdl file.--Sonal.
Sonala at 2007-7-13 23:23:51 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 4

I checked the WSDL and webservices.xml, they are the same:

In WSDL, the port name:

<port name="ORMEngineServiceEndpointPort" binding="tns:ORMEngineServiceEndpointBinding">

in webservices.xml:

<wsdl-port>ORMEngineServiceEndpointPort</wsdl-port>

NeoGigsa at 2007-7-13 23:23:51 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 5
I concluded that wsdl port is different from files that you have provided.wsdl:<port name="ORMEngineServiceEndpointPort" binding="tns:ORMEngineServiceEndpointBinding">webservice.xml:<wsdl-port>PersistenceServiceEndpointPort</wsdl-port>--Sonal
Sonala at 2007-7-13 23:23:51 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 6

if we examine the webservices.xml, there are 2 part:

<webservices 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" version="1.1">

<webservice-description>

<webservice-description-name>PersistenceService</webservice-description-name>

<wsdl-file>META-INF/wsdl/PersistenceService.wsdl</wsdl-file>

<jaxrpc-mapping-file>META-INF/mapping-persistence.xml</jaxrpc-mapping-file>

<port-component>

<port-component-name>PersistencePort</port-component-name>

<wsdl-port>

PersistenceServiceEndpointPort</wsdl-port>

<service-endpoint-interface>gov.mohr.ems.core.entity.logic.PersistenceServiceEndpoint</service-endpoint-interface>

<service-impl-bean>

<ejb-link>PersistenceEJB</ejb-link>

</service-impl-bean>

</port-component>

</webservice-description>

<webservice-description>

<webservice-description-name>ORMEngineService</webservice-description-name>

<wsdl-file>META-INF/wsdl/ORMEngineService.wsdl</wsdl-file>

<jaxrpc-mapping-file>META-INF/mapping-ormengine.xml</jaxrpc-mapping-file>

<port-component>

<port-component-name>ORMEnginePort</port-component-name>

<wsdl-port>

ORMEngineServiceEndpointPort</wsdl-port>

<service-endpoint-interface>gov.mohr.ems.core.entity.logic.ORMEngineServiceEndpoint</service-endpoint-interface>

<service-impl-bean>

<ejb-link>ORMEngineEJB</ejb-link>

</service-impl-bean>

</port-component>

</webservice-description>

</webservices>

one is for Persistence service, one is for ORMEngine service. it is just that i need to put them both inside the same webservices.xml

NeoGigsa at 2007-7-13 23:23:51 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...