`
linxingliang
  • 浏览: 6513 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAX-WS之旅(二)

阅读更多

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);

       

    }

}

 

 

 

 

运行该类:

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

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

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

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

代码绝对的分离。

 

源码下载:

 

 

 

 

  • 大小: 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
分享到:
评论
1 楼 DeveloperJava 2015-01-05  

相关推荐

    jax-ws webservice demo

    基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...

    JAX-WS 2.2 RI所有相关jar包

    JAX-WS 2.2 RI 所包含的JAR包集合,包含25个JAR包,列表如下: FastInoset.jar gmbal-api-only.jar ha-api.jar javax.annotation.jar javax.mail_1.4.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxws-api...

    JAX-WS自学笔记

    JAX-WS自学笔记 本人自学JAX-WS笔记和简单例子,文档标题结构如下: JAX-WS使用教程 1、JAX-WS概述 2、创建Web Service 2.1 从java开始 2.1.1 运行wsgen 2.1.2 生成的WSDL和XSD 2.1.3 目录结构 2.2 从WSDL...

    Jax-ws所需要的JAR包

    亲测可用,Jax-ws所需要的JAR包,拷贝到tomcat安装路径的lib里,实现了webservice发布到tomcat,赞!

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例 - 外衣 - 博客频道 - CSDN_NET.mht

    metro-jax-ws-master

    The Java API for XML Web Services (JAX-WS) is a Java programming language API for creating web services, particularly SOAP services. JAX-WS is one of the Java XML programming APIs. It's a part of the ...

    JAX-WS_WebService.rar

    JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用

    webService部署tomcat需要的jax-ws jar包

    webService部署tomcat需要的jax-ws 的完整jar包

    JAX-WS之旅

    JAX-WS —— JavaAPIforXMLWebServices(JAX-WS) 是Java程 序设计语言一个用来创建Web服务的API

    JAX-WS2.0 API

    JAX-WS2.0 API

    Jax-WS 简单实例

    Jax-WS的简单实例 Jax-WS的简单实例

    jax-ws webservice简单demo

    jax-ws webservice完整demo,包含所有jax-ws 2.2jar包。

    jax-rs jax-ws所需包,亲测可用

    javax.xml.ws.Service 报错需要的包,亲测可以用,直接下载在ide里buildpath一下就可以,四个jar包 ,整合了其他的jar所以配置简单

    JAX-WS 2.2 完整jar包

    JAX-WS 2.2 RI 所包含的JAR包集合,包含25个JAR包,列表如下: FastInoset.jar gmbal-api-only.jar ha-api.jar javax.annotation.jar javax.mail_1.4.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxws-api...

    使用JAX-WS(JWS)发布WebService

    使用JAX-WS(JWS)发布WebService 使用myeclipse开发java的webservice的两种方式 方式一: (此方式只能作为调试,有以下bug:jdk1.6u17?以下编译器不支持以Endpoint.publish方式发布document方式的soap,必须在...

    JAX-WS 之 CXF 框架

    jax-ws方式的webservice服务,基于xml的webservice开发,资料很全面很珍贵,大师所写的书籍,真心不贵

    JAX-WS开发的文件生成与部署相关全视频过程

    如果基于一个JAX-WS进行WebService开发,有很多教程,但是具体怎么更自动地生成一些文件,实现客户端与服务端的交互,都讲得不大清楚,为了让大家更方便地部署,我将服务端、客户端文件的生成与部署全过程以及测试...

    JAX-WS Web service

    JAX-WS Web service 开发初步

    jax-ws 方式发布web Service 后台用Hibernate实现,前端.NET通过引用服务方式实现

    rar中包含整个项目的源码和数据库生成脚本,采用jax-ws发布Web Service服务,支持java客户端和.Net客户端调用,数据库采用oracle10g,里面有创建数据库脚本文件createTable_Oracle10g.sql,由于Hibernate映射表中会...

Global site tag (gtag.js) - Google Analytics