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!

