WebService-CXF第三种方式发布和调用

发布方

主要的架包支持

pom.xml

  	<!-- 导入cxf架包及其它依赖包 -->
  	<dependency>
	  <groupId>org.apache.cxf</groupId>
	  <artifactId>cxf-rt-frontend-jaxws</artifactId>
	  <version>3.1.12</version>
	</dependency>
  	<dependency>
	  <groupId>org.apache.cxf</groupId>
	  <artifactId>cxf-rt-transports-http</artifactId>
	  <version>3.1.2</version>
	</dependency>
  	<dependency>
	  <groupId>org.apache.cxf</groupId>
	  <artifactId>cxf-rt-transports-http-jetty</artifactId>
	  <version>3.1.12</version>
	</dependency>
  	
  	<!-- 导入log4j12架包 -->
  	<dependency>
	  <groupId>org.slf4j</groupId>
	  <artifactId>slf4j-log4j12</artifactId>
	  <version>1.8.0-alpha2</version>
	</dependency>
	 
	<!-- 引入springmvc架包 -->
	<dependency>
	  <groupId>org.springframework</groupId>
	  <artifactId>spring-webmvc</artifactId>
	  <version>4.3.2.RELEASE</version>
	</dependency>
  	


CalcService

package cn.et;

import javax.jws.WebMethod;
import javax.jws.WebService;

/**
 * WebService和WebMethod必须加在service接口上
 * 不然发布的时候不会显示该接口以及暴露的方法
 * @author Administrator
 *
 */
@WebService
public interface CalcService {

	@WebMethod
	public abstract String calc(int p1, int p2, String sign);

}


CalcServiceImpl

package cn.et;

import org.springframework.stereotype.Service;

@Service
public class CalcServiceImpl implements CalcService {

	/**
	 * 实现加减乘除的运算
	 * sign 运算符号
	 * (non-Javadoc)
	 * @see cn.et.CaleService#cale(int, int, java.lang.String)
	 */
	public String calc(int p1,int p2,String sign){
		if(sign.equals("+")){
			return (p1+p2)+"";
		}
		else if(sign.equals("-")){
			return (p1-p2)+"";
		}
		else if(sign.equals("*")){
			return (p1*p2)+"";
		}
		else if(sign.equals("/")){
			return (p1/p2)+"";
		}
		return "不支持该计算类型";
	}
}


log4j.properties

log4j.rootLogger=debug, ServerDailyRollingFile, stdout 
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd 
log4j.appender.ServerDailyRollingFile.File=C\://logs/notify-subscription.log 
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout 
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n 
log4j.appender.ServerDailyRollingFile.Append=true

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n



spring.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xmlns:context="http://www.springframework.org/schema/context" 
		xmlns:jaxws="http://cxf.apache.org/jaxws" 
		xsi:schemaLocation=" 
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
		 http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
    
    <context:component-scan base-package="cn.et"></context:component-scan>
    <!-- 表示要使用已经定义好的spring.xml文件  初始化内部类比如JaxWsServerFactoryBean -->
    <import resource="classpath:META-INF/cxf/cxf.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
    
    <!-- 
    	endpoing用于发布一个webservice bean都要有id
    	http://tomcat发布时主机ip:端口/项目上下文路径/calc
     -->
    <jaxws:endpoint id="helloWorld" implementor="#calcServiceImpl" address="/calc"/>


</beans>


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring.xml</param-value>
   </context-param>
 
   <listener>
      <listener-class>
         org.springframework.web.context.ContextLoaderListener
      </listener-class>
   </listener>
   
   <servlet>
   	<servlet-name>CXFService</servlet-name>
   	<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
   </servlet>
   
   <servlet-mapping>
   	<servlet-name>CXFService</servlet-name>
   	<!-- 必须加个前缀 -->
   	<url-pattern>/service/*</url-pattern>
   </servlet-mapping>
   
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


添加到tomcat发布


调用方

pom.xml

  			<!-- 导入cxf架包及其它依赖包 -->
  	<dependency>
	  <groupId>org.apache.cxf</groupId>
	  <artifactId>cxf-rt-frontend-jaxws</artifactId>
	  <version>3.1.12</version>
	</dependency>
  	<dependency>
	  <groupId>org.apache.cxf</groupId>
	  <artifactId>cxf-rt-transports-http</artifactId>
	  <version>3.1.2</version>
	</dependency>
  	<dependency>
	  <groupId>org.apache.cxf</groupId>
	  <artifactId>cxf-rt-transports-http-jetty</artifactId>
	  <version>3.1.12</version>
	</dependency>
  	
  	<!-- 导入log4j12架包 -->
  	<dependency>
	  <groupId>org.slf4j</groupId>
	  <artifactId>slf4j-log4j12</artifactId>
	  <version>1.8.0-alpha2</version>
	</dependency>
	 
	<!-- 引入springmvc架包 -->
	<dependency>
	  <groupId>org.springframework</groupId>
	  <artifactId>spring-webmvc</artifactId>
	  <version>4.3.2.RELEASE</version>
	</dependency>
  


spring.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xmlns:context="http://www.springframework.org/schema/context" 
		xmlns:jaxws="http://cxf.apache.org/jaxws" 
		xsi:schemaLocation=" 
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
		 http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
    
  <jaxws:client id="calcService"
        serviceClass="cn.et.CalcService"
         address="http://192.168.4.105/sws/service/calc?wsdl"></jaxws:client>
</beans>


log4j.properties

log4j.rootLogger=debug, ServerDailyRollingFile, stdout 
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd 
log4j.appender.ServerDailyRollingFile.File=C\://logs/notify-subscription.log 
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout 
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n 
log4j.appender.ServerDailyRollingFile.Append=true

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n


CalcService

package cn.et;

import javax.jws.WebService;

/**
 * WebService和WebMethod必须加在service接口上
 * 不然发布的时候不会显示该接口以及暴露的方法
 * @author Administrator
 *
 */
@WebService
public interface CalcService {

	public abstract String calc(int p1, int p2, String sign);

}


Test

package cn.et;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

	public static void main(String[] args) {
		ClassPathXmlApplicationContext xcac = new ClassPathXmlApplicationContext("classpath:spring.xml");
		CalcService calc = (CalcService)xcac.getBean("calcService");
		System.out.println(calc.calc(1,2,"+"));
		
	}
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值