Hi All,
In one of previous mails I asked how can I deploy session bean as a web
service. Now with the help of David and others I can deploy it in G 1.1.1
without errors. But it gives following error when I try to access it
through a web client in same ear. I can't view the WSDL of the WS from a
browser too.
Any obvious thing I am missing here?
########### Error when accessing WS from a client #####################
javax.xml.rpc.ServiceException: no port for class
org.apache.geronimo.samples.calc.CalculatorService
at
org.apache.geronimo.axis.client.ServiceImpl.internalGetPortFromClassName(ServiceImpl.java:160)
at
org.apache.geronimo.axis.client.ServiceImpl.getPort(ServiceImpl.java:78)
at
org.apache.geronimo.samples.calc.web.CalculatorClientServlet.callService(Unknown
Source)
at
org.apache.geronimo.samples.calc.web.CalculatorClientServlet.doGet(Unknown
Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56)
at
org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:342)
at
org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:31)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
################### CalculatorServiceEJB.wsdl ##############################
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="CalculatorServiceEJB"
targetNamespace="urn:geronimo-samples" xmlns:tns="urn:geronimo-samples"
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="CalculatorService_addition">
<part name="int_1" type="xsd:int"/>
<part name="int_2" type="xsd:int"/>
</message>
<message name="CalculatorService_additionResponse">
<part name="result" type="xsd:int"/>
</message>
<portType name="CalculatorService">
<operation name="addition" parameterOrder="int_1 int_2">
<input message="tns:CalculatorService_addition"/>
<output message="tns:CalculatorService_additionResponse"/>
</operation>
</portType>
<binding name="CalculatorServiceBinding" type="tns:CalculatorService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="rpc"/>
<operation name="addition">
<soap:operation soapAction=""/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
use="encoded" namespace="urn:geronimo-samples"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
use="encoded" namespace="urn:geronimo-samples"/>
</output>
</operation>
</binding>
<service name="CalculatorServiceEJB">
<port name="CalculatorServicePort"
binding="tns:CalculatorServiceBinding">
<soap:address location="REPLACE_WITH_ACTUAL_URL"/>
</port>
</service>
</definitions>
###################### jaxrpc-mapping.xml #########################
<?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>org.apache.geronimo.samples.calc</package-type>
<namespaceURI>urn:geronimo-samples</namespaceURI>
</package-mapping>
<package-mapping>
<package-type>org.apache.geronimo.samples.calc</package-type>
<namespaceURI>urn:geronimo-samples</namespaceURI>
</package-mapping>
<service-interface-mapping>
<service-interface>
org.apache.geronimo.samples.calc.CalculatorService
</service-interface>
<wsdl-service-name
xmlns:serviceNS="urn:geronimo-samples">serviceNS:CalculatorServiceEJB</wsdl-service-name>
<port-mapping>
<port-name>CalculatorServicePort</port-name>
<java-port-name>CalculatorServicePort</java-port-name>
</port-mapping>
</service-interface-mapping>
<service-endpoint-interface-mapping>
<service-endpoint-interface>org.apache.geronimo.samples.calc.CalculatorService</service-endpoint-interface>
<wsdl-port-type
xmlns:portTypeNS="urn:geronimo-samples">portTypeNS:CalculatorService</wsdl-port-type>
<wsdl-binding
xmlns:bindingNS="urn:geronimo-samples">bindingNS:CalculatorServiceBinding</wsdl-binding>
<service-endpoint-method-mapping>
<java-method-name>addition</java-method-name>
<wsdl-operation>addition</wsdl-operation>
<method-param-parts-mapping>
<param-position>0</param-position>
<param-type>int</param-type>
<wsdl-message-mapping>
<wsdl-message
xmlns:wsdlMsgNS="urn:geronimo-samples">wsdlMsgNS:CalculatorService_addition</wsdl-message>
<wsdl-message-part-name>int_1</wsdl-message-part-name>
<parameter-mode>IN</parameter-mode>
</wsdl-message-mapping>
</method-param-parts-mapping>
<method-param-parts-mapping>
<param-position>1</param-position>
<param-type>int</param-type>
<wsdl-message-mapping>
<wsdl-message
xmlns:wsdlMsgNS="urn:geronimo-samples">wsdlMsgNS:CalculatorService_addition</wsdl-message>
<wsdl-message-part-name>int_2</wsdl-message-part-name>
<parameter-mode>IN</parameter-mode>
</wsdl-message-mapping>
</method-param-parts-mapping>
<wsdl-return-value-mapping>
<method-return-value>int</method-return-value>
<wsdl-message
xmlns:wsdlMsgNS="urn:geronimo-samples">wsdlMsgNS:CalculatorService_additionResponse</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>
######################### ejb-jar.xml ######################################
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar 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" version="2.1">
<description><![CDATA[Calc Application]]></description>
<display-name>Generated by XDoclet</display-name>
<enterprise-beans>
<!-- Session Beans -->
<session >
<description><![CDATA[]]></description>
<ejb-name>CalculatorServiceBean</ejb-name>
<service-endpoint>org.apache.geronimo.samples.calc.CalculatorService</service-endpoint>
<ejb-class>org.apache.geronimo.samples.calc.ejb.CalculatorServiceBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</ejb-jar>
############################ openejb-jar.xml
#################################
<?xml version="1.0" encoding="UTF-8"?>
<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
<dep:environment
xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1">
<dep:moduleId>
<dep:groupId>org.apache.geronimo.samples</dep:groupId>
<dep:artifactId>CalculatorEJB</dep:artifactId>
<dep:version>1.0</dep:version>
<dep:type>car</dep:type>
</dep:moduleId>
<dep:dependencies>
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>geronimo-webservices</dep:artifactId>
<dep:type>jar</dep:type>
</dep:dependency>
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>geronimo-axis</dep:artifactId>
<dep:type>jar</dep:type>
</dep:dependency>
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>tomcat</dep:artifactId>
<dep:type>car</dep:type>
</dep:dependency>
</dep:dependencies>
<dep:hidden-classes/>
<dep:non-overridable-classes/>
</dep:environment>
<enterprise-beans>
<session>
<ejb-name>CalculatorServiceBean</ejb-name>
<web-service-address>/Calculator/calc-ejb</web-service-address>
</session>
</enterprise-beans>
</openejb-jar>
####################### geronimo-web.xml
#####################################
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1"
xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.1">
<dep:environment
xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1">
<dep:moduleId>
<dep:groupId>org.apache.geronimo.samples</dep:groupId>
<dep:artifactId>CalculatorWeb</dep:artifactId>
<dep:version>1.0</dep:version>
<dep:type>car</dep:type>
</dep:moduleId>
<dep:dependencies>
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>geronimo-webservices</dep:artifactId>
<dep:type>jar</dep:type>
</dep:dependency>
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>geronimo-axis</dep:artifactId>
<dep:type>jar</dep:type>
</dep:dependency>
</dep:dependencies>
<dep:hidden-classes/>
<dep:non-overridable-classes/>
</dep:environment>
<context-root>/Calculator</context-root>
<service-ref>
<service-ref-name>services/Calculator</service-ref-name>
<port>
<port-name>CalculatorServicePort</port-name>
<protocol>http</protocol>
<host>localhost</host>
<port>8080</port>
<uri>/Calculator/calc-ejb</uri>
</port>
</service-ref>
</web-app>
############################# web.xml
###############################################
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:calc="urn:geronimo-samples"
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/web-app_2_4.xsd"
version="2.4">
<servlet>
<display-name>CalculatorServiceServlet</display-name>
<servlet-name>CalculatorServiceServlet</servlet-name>
<servlet-class>
org.apache.geronimo.samples.calc.web.CalculatorServiceServlet
</servlet-class>
</servlet>
<servlet>
<display-name>CalculatorClientServlet</display-name>
<servlet-name>CalculatorClientServlet</servlet-name>
<servlet-class>
org.apache.geronimo.samples.calc.web.CalculatorClientServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CalculatorServiceServlet</servlet-name>
<url-pattern>/calc-servlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CalculatorClientServlet</servlet-name>
<url-pattern>/calc-client</url-pattern>
</servlet-mapping>
<service-ref>
<service-ref-name>services/Calculator</service-ref-name>
<service-interface>javax.xml.rpc.Service</service-interface>
</service-ref>
</web-app>
Thanks,
Lasantha Ranaweera