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

WebService CXF学习:对象传递

发布时间:2020-12-16 22:03:00 所属栏目:安全 来源:网络整理
导读:文章摘抄至? http://xuzhfa123.iteye.com/blog/563331 ? 第一步:创建传输对象Customer package pojo.model;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlRootEl

文章摘抄至?http://xuzhfa123.iteye.com/blog/563331

?

第一步:创建传输对象Customer

package pojo.model;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlRootElement(name = "Customer")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = { "name","age" })
public class Customer {

	private int age;
	private String name;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

@XmlRootElement-指定XML根元素名称(可选)?

@XmlAccessorType-控制属性或方法序列化?

四种方案:?

FIELD-对每个非静态,非瞬变属性JAXB工具自动绑定成XML,除非注明XmlTransient?

NONE-不做任何处理?

PROPERTY-对具有set/get方法的属性进行绑定,除非注明XmlTransient?

PUBLIC_MEMBER -对有set/get方法的属性或具有共公访问权限的属性进行绑定,除非注?

明XmlTransient?

@XmlType-映射一个类或一个枚举类型成一个XML Schema类型?

?

?第二步:创建WebService接口?

package pojo.service;

import javax.jws.WebService;

import pojo.model.Customer;

@WebService
public interface HelloService {

	public void save(Customer c1,Customer c2);
	
	public void test(String args);
	
	public Customer get(int id);
}

?

?每三步:创建WebService接口实现类?

package pojo.service;

import javax.jws.WebService;

import pojo.model.Customer;

@WebService
public class HelloServiceImpl implements HelloService {

	public void save(Customer c1,Customer c2) {

		System.out.println(c1.getAge() + "---" + c2.getAge());
		System.out.println(c1.getName() + "---" + c2.getName());
	}

	public void test(String args) {
		System.out.println(args);

	}

	public Customer get(int id) {
		Customer cus = new Customer();
		cus.setAge(100);
		cus.setName("Josen");
		return cus;
	}

}

?

第四步:创建服务端?

package pojo.deploy;

import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import pojo.service.HelloServiceImpl;

public class SoapServer {

	public static void main(String[] args) {
		// 两种方法,任选一种发布WebService接口
		// Endpoint.publish("http://localhost:8080/helloService",new
		// HelloServiceImpl());
		JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
		factory.setAddress("http://localhost:8080/helloService");
		factory.setServiceClass(HelloServiceImpl.class);
		factory.getInInterceptors().add(new LoggingInInterceptor());
		factory.getOutInterceptors().add(new LoggingOutInterceptor());
		factory.create();
	}
}

?

第五步:创建客户端?

package pojo.client;

import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import pojo.model.Customer;
import pojo.service.HelloService;

public class SoapClient {

	public static void main(String[] args) {
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
		factory.setAddress("http://localhost:8080/helloService");
		//只能添加接口类,否则会提示参数错误
		factory.setServiceClass(HelloService.class);
		//下面的代码是错误的
//		factory.setServiceClass(HelloServiceImpl.class);
		factory.getInInterceptors().add(new LoggingInInterceptor());
		HelloService service = (HelloService) factory.create();

		Customer c1 = new Customer();
		c1.setAge(1);
		c1.setName("aaa");

		Customer c2 = new Customer();
		c2.setAge(2);
		c2.setName("bbb");

		service.save(c1,c2);
		service.test("aaaaaaaaaaaaa");
	}
}

?

?最后,测试程序?

运行服务端程序,在浏览器地址栏输入http://localhost:8080/helloService?wsdl查看接口是否发布成功。成功则运行一下客户端程序,看看对象传输是否成功。?

(编辑:李大同)

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

    推荐文章
      热点阅读