加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webservice开发(cxf)

发布时间:2020-12-17 00:54:26 所属栏目:安全 来源:网络整理
导读:1、创建一个动态的web项目,引入jar, http://pan.baidu.com/s/1sk1vwDJ ,此网盘上有整个web项目,可以直接运行在tomcat5.5以上、jdk1.6 ,服务端配置: 1、xml配置引入: ? param-valueWEB-INF/applicationContext.xml/param-value /context-param listene

1、创建一个动态的web项目,引入jar,
http://pan.baidu.com/s/1sk1vwDJ ,此网盘上有整个web项目,可以直接运行在tomcat5.5以上、jdk1.6 ,服务端配置:


1、xml配置引入:

?
        <param-value>WEB-INF/applicationContext.xml</param-value>  
    </context-param>  
    
     <listener>  
        <listener-class>  
              org.springframework.web.context.ContextLoaderListener  
        </listener-class>  
    </listener>  
   
	
	
	<!-- WebService -->
	<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>


2、在WEB-INF目录下新建一个xml,可以命名为applicationContext.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:http-conf="http://cxf.apache.org/transports/http/configuration"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans.xsd
						http://cxf.apache.org/jaxws
						http://cxf.apache.org/schemas/jaxws.xsd
						http://cxf.apache.org/transports/http/configuration 
             			http://cxf.apache.org/schemas/configuration/http-conf.xsd">
	<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" />
	 
 	
	<!-- Start 供WebService调用的业务Service -->
	<bean id="test12333WS"
		class="com.lbs.webservice.wsinterface.Test12333WSIMP">
	</bean>
	<jaxws:server id="test12333WSServer" address="/test12333WS">
		<jaxws:serviceBean>
			<ref bean="test12333WS" />
		</jaxws:serviceBean>
	</jaxws:server>
	<!-- End 供WebService调用的业务Service -->
	
	
	<!-- Start 客户端使用  -->
	 <bean id="client"   
            class="com.lbs.webservice.wsinterface.Test12333WS"   
            factory-bean="clientFactory"   
            factory-method="create"/>  
  
     <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">  
            <property name="serviceClass" value="com.lbs.webservice.wsinterface.Test12333WS"/>  
            <property name="address" value="http://localhost:8080/clientws/services/test12333WS"/>  
     </bean>  
     <!-- End 客户端使用  -->
	 
</beans>


3、服务端接口类(这里的服务端接口类,必须要写@WebService),如果是客户端的代码,那么必须要和服务端的包路径一样

import javax.jws.WebService;

/*注意:1、@WebService必须要写,否则会找不到接口方法、
 *     2、接口Test12333WS放的路径,在什么包下要和服务端一模一样,否则也会报错
 * 
 * 
 * 
 * */
@WebService
public interface Test12333WS {
	public Test12333Dto say(String name);
}


4、服务端实现类(只有服务端才使用实现类,客户端不需要,只需要接口即可)

package com.lbs.webservice.wsinterface;

import javax.jws.WebService;

@WebService
public class Test12333WSIMP implements Test12333WS {
	
	@Override
	public Test12333Dto say(String name){
		Test12333Dto dto = new Test12333Dto();
		dto.setA(123456L);
		dto.setB(name +"Hello World");
		return dto;
	}

}

5、参数传递实体类

package com.lbs.webservice.wsinterface;

public class Test12333Dto {
	
	 
	private java.lang.Long a;
 
	 
	private java.lang.String b;
 
	
	 

}


----------------------------------------------------------服务端完成-------------------------------------------------------------------------

启动tomcat,输入地址http://127.0.0.1:8080/clientws/services/

即可以看到已经定义的webservice接口类和方法



------------------------------------------------------------客户端调用服务端------------------------------------------------------------------------------------------


方法1、直接写一个测试类,写一个main函数,函数代码如下:(

JaxWsProxyFactoryBean需要引入一个jar包,cxf2.2.jar,项目里面已经有了

	/**
	* 通过代理API调用,依赖于服务端的接口 // 调用WebService方式1、
	*/
	public static void main(String[] args) {
		
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
		factory.setServiceClass(Test12333WS.class);
		factory.setAddress("http://127.0.0.1:8080/clientws/services/test12333WS");
		Test12333WS service = (Test12333WS) factory.create();
		Test12333Dto dto = service.say("老何");
		System.out.println(dto.getA());
	}


方法2、配置,配置即在applicationContext.xml文件中不删除客户端代码,然后在jsp页面(这里只是列子,为了简单,所以就直接在index.jsp中写了java代码,代码如下:)


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="org.springframework.context.ApplicationContext"%>
<%@page import="org.springframework.context.support.ClassPathXmlApplicationContext"%>
<%@page import="com.lbs.webservice.wsinterface.Test12333WS"%>
<%@page import="com.lbs.webservice.wsinterface.Test12333Dto"%>

 
    <%
    
	ApplicationContext factory = new ClassPathXmlApplicationContext("../applicationContext.xml");  
	Test12333WS client = (Test12333WS)factory.getBean("client");  
	Test12333Dto dto = client.say("老何");
	System.out.println(dto.getAab002());
    %>
<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读