JAX-WS之旅(二)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > JAX-WS之旅(二)

JAX-WS之旅(二)

 2011/10/13 8:12:42  linxingliang  http://linxingliang.iteye.com  我要评论(0)
  • 摘要:JAX-WS之旅(二)——Angel注意:1>在看本文之前需要您有一定的JAX-WS基础。基础可以看相关的<<JAX-WS之旅(一)>>网址:http://linxingliang.iteye.com/admin/blogs/11908502>版权归作者所有3>允许随意使用4>这是一个完整的例子,带有源码5>图片不能复制上来,所以放在附件中。目录1.新建一个工程...22.新建包...23.建立所需要的类...33
  • 标签:

JAX-WS之旅()

——Angel

注意:

1>在看本文之前需要您有一定的JAX-WS基础。

基础可以看相关的<<JAX-WS之旅(一)>>

网址:http://linxingliang.iteye.com/admin/blogs/1190850

2>版权归作者所有

3>允许随意使用

4>这是一个完整的例子,带有源码

5>图片不能复制上来,所以放在附件中。

?

目录

1.新建一个工程... 2

2. 新建包... 2

3. 建立所需要的类... 3

3.1 WebService_Model... 3

3.2 WebService_Control... 6

3.3 编写服务器类... 12

3.4 WebService_View... 14

?

前言

JAX-WS我们简单的对webservice有了一定的了解,但是你会发现我们的所有代码都是放在同一个工程当中,并不能看出webservice的厉害之前。本节课我们将探索webservice的分层开发结构。

?

?

?

1.新建一个工程

这一步骤相信大家都应该没有问题了,再有问题,那就回家种田了,嘎嘎,跟家人们开个玩笑,别太在意呀。

但是这次建立工程并不是简单的建立一个工程了。我们要严格按照MVC模式进行编程,所以有关model的类我们放在一个工程里,有关

View的放在一个工程里,有关Control的放在一个工程里。

那么就需要我们建立三个工程:工程名分别为:

WebService_Model

WebService_View

WebService_Control

建立完成之后文件目录结构

?

2. 新建包

在各个工程中建立包,各个工程所需要建立的包如下:

WebService_Model包如下:

net.angel.model

WebService_View包如下:

net.angel.view

WebService_Control包如下:

net.angel.control

建立完成之后文件目录结构:

?

3. 建立所需要的类

3.1 WebService_Model

在工程WebService_Model工程中建立Person

代码如下:

package net.angel.model;

?

import java.io.Serializable;

import java.util.Date;

?

/**

?* Person model

?*

?* @author Administrator

?*

?*/

public class Person? implements Serializable{

??? private String id;// 编号

?

??? private String name;// 姓名

?

??? private String sex;// 性别

?

??? private int age;// 年龄

?

??? private Date birthday;// 出生年月

?

??? /**

??? ?* @return the id

??? ?*/

??? public String getId() {

??? ??? return id;

??? }

?

??? /**

??? ?* @param id

??? ?*??????????? the id to set

??? ?*/

??? public void setId(String id) {

?????? this.id = id;

??? }

?

??? /**

??? ?* @return the name

??? ?*/

??? public String getName() {

?????? return name;

??? }

?

??? /**

??? ?* @param name

??? ?*??????????? the name to set

??? ?*/

??? public void setName(String name) {

?????? this.name = name;

??? }

?

??? /**

??? ?* @return the sex

??? ?*/

??? public String getSex() {

?????? return sex;

??? }

?

??? /**

??? ?* @param sex

??? ?*??????????? the sex to set

??? ?*/

??? public void setSex(String sex) {

?????? this.sex = sex;

??? }

?

??? /**

??? ?* @return the age

??? ?*/

??? public int getAge() {

?????? return age;

??? }

?

??? /**

??? ?* @param age

??? ?*??????????? the age to set

??? ?*/

??? public void setAge(int age) {

?????? this.age = age;

??? }

?

??? /**

??? ?* @return the birthday

??? ?*/

??? public Date getBirthday() {

?????? return birthday;

??? }

?

??? /**

??? ?* @param birthday

??? ?*??????????? the birthday to set

??? ?*/

??? public void setBirthday(Date birthday) {

?????? this.birthday = birthday;

??? }

?

??? /**

??? ?*

??? ?*/

??? public Person() {

??????

??? }

?

??? /**

??? ?* @param id

??? ?* @param name

??? ?* @param sex

??? ?* @param age

??? ?* @param birthday

??? ?*/

??? public Person(String id, String name, String sex, int age, Date birthday) {

?????? this.id = id;

?????? this.name = name;

?????? this.sex = sex;

?????? this.age = age;

?????? this.birthday = birthday;

??? }

}

建立完成之后文件目录结构如下:

?

3.2 WebService_Control

在工程WebService_Control工程中编写 IPersonService接口PersonServiceImpl的实现类,代码分别如下:

IPersonService接口的代码(提供四个方法,增删改查):

写代码之前需要我们做一下配置。因为Model类是大家都需要的,需要导入到我们其他的工程。现在我们就一起操作下如何把工程WebService_Model中的类让WebService_Control工程中的其他类使用。

具体步骤如下:

选中【WebService_Control--【右键】--Properties--Java Build Path--右边选择【Projects--Add--选择【WebService_Model

?

?

图片操作:

?

OK完成之后在WebService_Control类中就可以使用Person类了。

现在让我们来编写IPersonServicePersonServiceImpl类吧。

IPersonService类的代码如下:

?

package net.angel.control;

?

import javax.jws.WebService;

?

import net.angel.model.Person;

?

?

/**

?* 操作Person的接口

?* @author Administrator

?*

?*/

@WebService//将该接口交给WebService进行管理

public interface IPersonService {

???

??? /**

??? ?* 保存数据方法

??? ?*/

??? public void save(Person person);

???

??? /**

??? ?* 删除数据方法

??? ?*/

??? public void delete(Person person);

???

??? /**

??? ?* 修改方法

??? ?*/

??? public void update(Person person);

???

??? /**

??? ?* 查询方法

??? ?*/

??? public void select(Person person);

}

?

PersonServiceImpl类的代码如下:

??? package net.angel.control;

?

import java.util.ArrayList;

import java.util.List;

?

import javax.jws.WebService;

?

import net.angel.model.Person;

?

/**

?* 实现类

?* @author Administrator

?*

?*/

?

// 定义客户端访问的WSDL服务名

@WebService(endpointInterface = "net.angel.control.IPersonService")

public class PersonServiceImpl implements IPersonService {

?

??? //List进行保存,模拟保存到数据库

??? private List<Person> list = new ArrayList<Person>();

???

??? @Override

??? public void save(Person person) {

?????? list.add(person);

??? }

?

??? @Override

??? public String delete(Person person) {

?????? // TODO Auto-generated method stub

??????

?????? String alert = "";

?????? if(person == null){

?????????? alert = "删除失败! null对象 ";

?????? }else {

?????????? alert = "没有找到id:"+person.getId()+"--name:"+person.getName()+"的用户,无法进行删除";

?????????? int size = list.size();

?????????? for(int i=0;i<size;i++){

????????????? if(person.getId().equals(list.get(i).getId())){

????????????????? alert = "成功删除id:"+list.get(i).getId() +"--name:"+list.get(i).getName()+"的用户";

????????????????? list.remove(i);

????????????????? break;

?????????????????

????????????? }

?????????? }

?????? }

??????

?????? return alert;

??? }

?

??? @Override

??? public String update(Person person) {

?????? // TODO Auto-generated method stub

?????? String alert = "";

?????? if(person == null){

?????????? alert = "null对象,删除失败";

?????? }else {

?????????? alert = "没有找到id:"+person.getId()+"---name"+person.getName()+"的用户,无法进行更新。";

?????????? int size= list.size();

?????????? for(int i=0;i<size;i++){

????????????? if(person.getId().equals(list.get(i).getId())){

????????????????? list.set(i,person);

????????????????? break;

????????????? }

?????????? }

?????? }??

?????? return alert;

??? }

?

??? @Override

??? public Person select(String id) {

?????? // TODO Auto-generated method stub

?????? Person p = null;

??????

?????? for(Person person : list){

?????????? if(person.getId().equals(id)){

????????????? p = person;

????????????? break;

?????????? }

?????? }

??????

?????? return p;

??? }

}

完成这些之后文件的目录结构如下:

?

3.3 编写服务器类

为了方便讲解我们的服务类直接在WebService_Control工程中建立启动服务类,类名为StartServer

代码如下:

package net.angel.control;

?

import javax.xml.ws.Endpoint;

?

public class StartServer {

?

??? /**

??? ?* @param args

??? ?*/

??? public static void main(String[] args) {

?

?????? //启动服务

??? ??? Endpoint.publish("http://127.0.0.1:1988/angel",new PersonServiceImpl());

??????

?????? System.out.println("The Server is started!");

??? }

?

}

启动服务类:

dos控制台可以看到:

完成之后文件目录结构如下:

?

3.4 WebService_View

在工程WebService_View中编写类 PersonView

在写之前,我们同样需要配置下:导入工程WebService_ViewWebService_Control.(如果把接口类和实现类分开会更好。)

操作方式和上面的是一样的。

具体操作如下:

选中【WebService_View--Properties--Java Build Path--Projects--Add--选中【WebService_Model】和【WebService_Control】工程--OK--OK.

图片操作略。

?

现在我们可以编写PersonView的代码了

代码如下:

?

package net.angel.view;

?

import java.net.MalformedURLException;

import java.net.URL;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.logging.SimpleFormatter;

?

import javax.xml.namespace.QName;

import javax.xml.ws.Service;

?

import net.angel.control.IPersonService;

import net.angel.model.Person;

?

public class PersonView {

?

??? public static void main(String[] args) throws MalformedURLException {

???????

??????? //url定位

??????? URL url = new URL("http://127.0.0.1:1988/angel");

???????

??????? //定位WSDL服务----http://control.angel.net这个是包名的倒序PersonServiceImplService

??????? QName qname = new QName("http://control.angel.net/","PersonServiceImplService");

???????

??????? //创建服务

??????? Service service = Service.create(url, qname);

???????

??????? //通过端口获取接口

??????? IPersonService personService = service.getPort(IPersonService.class);

???????

??????? System.out.println("连接成功!!!!!!!!!!");

???????

???????

??????? //模拟往数据库添加数据

??????? SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

??????? Calendar calendar = Calendar.getInstance();

???????

???????

??????? //第一个人

??????? calendar.set(1988,11,29);

??????? Person qian = new Person("080840238", "林祥纤","", 24,calendar.getTime());

??????? personService.save(qian);

???????

??????? //第二个人

??????? calendar.set(1989, 10,12);

??????? Person miao = new Person("080840237","练端渺","",23,calendar.getTime());

??????? personService.save(miao);

?

???????

??????? //第三个人

??????? calendar.set(1989, 6,10);

??????? Person bing = new Person("080840236","陈兵","",23,calendar.getTime());

??????? personService.save(bing);

?

???????

??????? //第四个人

??????? calendar.set(1988, 6,10);

??????? Person yang = new Person("080840235","姜美洋","",24,calendar.getTime());

???????

??????? //第五个人

??????? calendar.set(1988, 6,10);

??????? Person wei = new Person("080840234","张庆伟","",24,calendar.getTime());

??????? personService.save(wei);

?

???????

??????? //第六个人 8 月相当于 9

??????? calendar.set(1990,8,2);

??????? Person tong = new Person("080840233","韩雨彤","",22,calendar.getTime());

??????? personService.save(tong);

?

???????

??????? //模拟查询

??????? Person person? = personService.select("080840233");

??????? System.out.println("模拟查找-------------------------");

??????? System.out.println("找到的信息为:id:"+person.getId()+"----姓名为:"+person.getName()+

??????????????? "生日为:"+format.format(person.getBirthday()));

???????

??????? //模拟删除

??????? Person pp = new Person();

??????? System.out.println(person.getId()+"========");

??????? String msg? = personService.delete(person);

??????? System.out.println("从服务器接受的信息:"+msg);

???????

??? }

}

?

?

?

?

运行该类:

在控制台可以看到如下信息:

终于完工了,可以休息了。

下次模拟一个更真实的系统,进行讲解。

系统为:学生管理系统,有学生对象和老师对象。

代码绝对的分离。

?

源码下载:

?

?

?

?

  • JAX-WS之旅_二_源码.zip (20.4 KB)
  • 下载次数: 0
  • 大小: 8.6 KB
  • 大小: 11.3 KB
  • 大小: 9.3 KB
  • 大小: 12.8 KB
  • 大小: 11.8 KB
  • 大小: 15.8 KB
  • 大小: 38.3 KB
  • 大小: 50 KB
  • 大小: 32 KB
  • 大小: 27.9 KB
  • 大小: 22.2 KB
  • 大小: 27.8 KB
  • 大小: 32.7 KB
  • 大小: 28.5 KB
  • 大小: 12.3 KB
  • 大小: 17.9 KB
  • 大小: 24 KB
  • 大小: 38.2 KB
  • 大小: 13.1 KB
  • 大小: 18.6 KB
  • 大小: 14.3 KB
  • 大小: 42.7 KB
  • 查看图片附件
  • 相关文章
发表评论
用户名: 匿名