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

时间:2016-05-26 03:49:02

标签: java spring cxf

创建了一个示例wsdl。使用CXF框架从wsdl生成Java对象。一切都很好,我可以从本地测试类测试服务实现。

但是当我在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>

从Test类测试,它运行正常。

      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());

但没有任何帮助。请建议我在这里缺少什么,这里应该有一些小错误。

1 个答案:

答案 0 :(得分:0)

这是URL的构建方式:

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

肥皂:地址位置是这样的:

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之间的两个位置添加。