javaWeb项目发布带没有接口和有接口的WebService服务

无接口的项目结构图:


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>WebService_Web</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <!-- CXF框架的核心Servlet -->
  <servlet>
  	<servlet-name>cxf</servlet-name>
  	<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  </servlet>

  <servlet-mapping>
  	<servlet-name>cxf</servlet-name>
  	<url-pattern>/ws/*</url-pattern>
  </servlet-mapping>

</web-app>


cxf-servlet.xml:


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/bindings/soap 
http://cxf.apache.org/schemas/configuration/soap.xsd
http://cxf.apache.org/jaxws 
http://cxf.apache.org/schemas/jaxws.xsd">
	<!-- 引入CXF Bean定义如下,早期的版本中使用 -->
	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

	<!-- 直接发布一个类,无接口 
	<jaxws:endpoint id="one" implementor="cn.itcast.ws1.OneService"
		address="/one">
	</jaxws:endpoint>
	发布一个服务,没有指定接口
	<jaxws:server id="two" address="/two" serviceClass="cn.itcast.ws2.ITwoService">
		<jaxws:serviceBean>
			指定发布类,下面类必须添加@WebService注解
			<bean class="cn.itcast.ws2.TwoServiceImpl"></bean>
		</jaxws:serviceBean>
	</jaxws:server> -->
	
	
	
	
	<!-- 简单发布(PS:没有接口) -->
	<!-- 
		id:当前服务的唯一表示
		address:挡墙服务请求的ip
		implementor:提供的服务类型
	 -->
	<jaxws:endpoint id="helloService" address="/hello" implementor="Web_Service.Web_Servlet">
		<!-- 添加客户端消息请求拦截器 -->
		
		<jaxws:inInterceptors>
			<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
		</jaxws:inInterceptors>
		<!-- 添加服务端消息请求拦截器 -->
		<jaxws:outInterceptors>
			<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
		</jaxws:outInterceptors>
		
		
	</jaxws:endpoint>
	
</beans>


Web_Servlet.java:(这里是服务提供的方法:注意在类上加@WebService)

package Web_Service;

import javax.jws.WebService;


@WebService
public class Web_Servlet {
	public String sayHello(String name){
		System.out.println("sayHello called。。。"+name);
		return "hello"+name;
	}
}



有接口的项目结构图:

就在上面的结构图中多加了一个接口和实现方法。


cxf-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/bindings/soap 
http://cxf.apache.org/schemas/configuration/soap.xsd
http://cxf.apache.org/jaxws 
http://cxf.apache.org/schemas/jaxws.xsd">
	<!-- 引入CXF Bean定义如下,早期的版本中使用 -->
	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

	<!-- 直接发布一个类,无接口 
	<jaxws:endpoint id="one" implementor="cn.itcast.ws1.OneService"
		address="/one">
	</jaxws:endpoint>
	发布一个服务,没有指定接口
	<jaxws:server id="two" address="/two" serviceClass="cn.itcast.ws2.ITwoService">
		<jaxws:serviceBean>
			指定发布类,下面类必须添加@WebService注解
			<bean class="cn.itcast.ws2.TwoServiceImpl"></bean>
		</jaxws:serviceBean>
	</jaxws:server> -->
	
	
	
	
	<!-- 简单发布(PS:没有接口) -->
	<!-- 
		id:当前服务的唯一表示
		address:挡墙服务请求的ip
		implementor:提供的服务类型
	 -->
	<jaxws:endpoint id="helloService" address="/hello" implementor="Web_Service.Web_Servlet">
		<!-- 添加客户端消息请求拦截器 -->
		
		<jaxws:inInterceptors>
			<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
		</jaxws:inInterceptors>
		<!-- 添加服务端消息请求拦截器 -->
		<jaxws:outInterceptors>
			<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
		</jaxws:outInterceptors>
		
		
	</jaxws:endpoint>
	
	
	<!-- 方式二:带有接口的发布形式 -->
	<!-- serviceClass="Web_Service.HiService"接口的类 -->
	<jaxws:server id="hiServer" address="/hi" serviceClass="Web_Service.HiService">
		<jaxws:serviceBean>
			<!-- 实现类的类 -->
			<bean class="Web_Service.sayHiImpl"/>
		</jaxws:serviceBean>
	</jaxws:server>


</beans>


如果我们要指定cxf-servlet.xml文件的位置需要在web.xml如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>WebService_Web</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <!-- CXF框架的核心Servlet -->
  <servlet>
  	<servlet-name>cxf</servlet-name>
  	<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  	<init-param>
  		<param-name>config-location</param-name>
  		<param-value>classpath:cxf-servlet.xml</param-value>
  	</init-param>
  	
  </servlet>

  <servlet-mapping>
  	<servlet-name>cxf</servlet-name>
  	<url-pattern>/ws/*</url-pattern>
  </servlet-mapping>



</web-app>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值