创建了一个示例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());
但没有任何帮助。请建议我在这里缺少什么,这里应该有一些小错误。
答案 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-pattern
和service_name
之间的两个位置添加。