无法从浏览器访问已部署的 Web 服务

Not able to hit the deployed webservice from browser

创建了一个示例 wsdl。使用 CXF 框架从 wsdl 生成 Java 对象。一切都很好,我能够从本地测试 class.

测试服务实现

但是当我在 Tomcat 中部署并点击 url 时,我没有获得所有已部署的服务。

Web.xml

        <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
         <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

spring.xml

         <import resource="classpath:META-INF/cxf/cxf.xml" />
         <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

         <jaxws:endpoint id="testWS" implementor="#helloWorldService"
                address="/testWS">
         </jaxws:endpoint>

         <bean id="helloWorldService"     class="com.test.ws.service.HelloWorldServiceImpl" />

testing.wsdl

Have included the below snippet as well

         <wsdl:service name="HelloWorldService">
               <wsdl:port name="HelloWorldPort"    binding="tns:HelloWorldServiceSoapBinding">
            <soap:address location="http://localhost:8080/HelloWorldPort" />
        </wsdl:port>
    </wsdl:service>

已通过测试 class 测试,工作正常。

      HelloWorldServiceImpl helloWorldService = (HelloWorldServiceImpl)            context.getBean("helloWorldService");
        SayHi hi = new SayHi();
        hi.setText("Webservice Sample");
        helloWorldService.sayHi(hi);

        AdditionInput input = new AdditionInput();
        input.setInput1(10);
        input.setInput2(100);

        System.out.println(" Addition Output : " +     helloWorldService.addtion(input).getResult());

但无济于事。请指出我在这里遗漏了什么,这里应该有一些小错误。

URL 是这样构造的:

http://<server>:<port>/<context-root>/<url-pattern>/<service_name>?wsdl

而soap:address位置是这样的:

soap:address location="http://<server>:<port>/<context-root>/<url-pattern>/<service_name>.<port_name>"

因此,在您的情况下,这应该是配置:

<wsdl:service name="HelloWorldService">
         <wsdl:port name="HelloWorldPort" binding="tns:HelloWorldServiceSoapBinding">
            <soap:address location="http://localhost:8080/sampleproject/services/HelloWorldService.HelloWorldPort" />
        </wsdl:port>

URL:

http://localhost:8080/sampleproject/services/HelloWorldService?wsdl

您可以将 jaxws:endpoint 地址更改为“/”。

如果您希望保留它,请在两个位置的 url-patternservice_name 之间添加它。