优雅天平

享受喧嚣 安于平静
posts(18) comments(167) trackbacks(0)
  • BlogJava
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔档案(18)

  • 2006年4月 (1)
  • 2006年3月 (1)
  • 2005年12月 (3)
  • 2005年10月 (2)
  • 2005年9月 (1)
  • 2005年7月 (2)
  • 2005年6月 (3)
  • 2005年3月 (2)
  • 2005年2月 (3)

文章分类(62)

  •  eclipse(2)
  •  Guitar(11)
  •  J2EE相关(5)
  •  JAVA基础(7)
  •  Solaris相关(1)
  •  WAP相关(1)
  •  web services(12)
  •  web页面基础(4)
  •  开源相关(16)
  •  数据库/仓库(2)
  •  模式相关(1)

文章档案(61)

  • 2006年2月 (1)
  • 2006年1月 (3)
  • 2005年12月 (32)
  • 2005年11月 (8)
  • 2005年9月 (6)
  • 2005年8月 (1)
  • 2005年6月 (6)
  • 2005年5月 (1)
  • 2005年3月 (1)
  • 2005年2月 (2)

相册

  • 大事记
  • 我的照片

blog

  • 小江西
  • 铁手剑谱的blog-strust
  • 陶永胜书法艺术中心

站点搜藏

  • Matrix-与Java共舞
  • OpenSource
  • 中国java开发网

搜索

  •  

积分与排名

  • 积分 - 142724
  • 排名 - 437

最新评论

  • 1. re: JFreeChart完全攻略示例各种方法和属性[未登录]
  • sdfg
  • --111
  • 2. re: JFreeChart完全攻略示例各种方法和属性
  • 分数线烦不烦很舒服发个号发给合适的给他发所提供合适的土壤规范不能是纳税人他呢过生日能接受洒脱人呢是vae回复身体然后呢托管人粉红丝带让他反感 受托人复活币善待他人回事
  • --倒萨倒
  • 3. re: Jcreator注册码[未登录]
  • 有谁有jcreator 5.0 pro的注册码呀?跪求
  • --liu
  • 4. re: 开启log4j的记录源代码行号的配置,会对系统性能产生影响!
  • 怎么说呢?理解的有点片面。。。jdk1.4之前的话的确对性能影响比较大,自从1.4开始引入了StackTraceElement之后,对性能影响不是那么大。。。
  • --黄大仙
  • 5. re: 请问MYECLIPSE在哪里输入注册码呀?[未登录]
  • 对我这个初学者有帮助,嘿嘿。
  • --Flyer

阅读排行榜

  • 1. Jcreator注册码(22639)
  • 2. java日期相减问题(20246)
  • 3. Myeclipse注册码(13945)
  • 4. jbuilder 2006 破解文件(13717)
  • 5. 修改 Oracle9i 8080端口问题(2888)

评论排行榜

  • 1. jbuilder 2006 破解文件(58)
  • 2. Jcreator注册码(50)
  • 3. Myeclipse注册码(18)
  • 4. JBuilder2005光标问题更好的解决方法(6)
  • 5. B/S结构程序等待查询结果超时问题(5)

View Post

基于JAX-RPC的快速Web服务开发方案

前两天写了两篇Blog使用SOAP开发java web服务--Axis开发方案 ,深入探索SOAP1.1--使用SAAJ1.2.1 ,有些读者可能对Java的web服务开发抱怨了,怎的那么复杂呢?不如在net平台下敲几个键就行了,:),请先不用着急,前两天我的Blog只是为了让各位读者深入了解一下什么是SOAP,以及其在Java中的封装接口实现,今天我们来讨论一下,一种高层的web服务实现方案,那就是基于JAX-RPC的服务实现。
      JAX-RPC 1.1规范没有定义用于实现基于JAX-RPC的服务的任何API。基于JAX-RPC的服务均可使用Java类或使用WSDL文档实现,这两种情况,JAX-RPC均不为其服务端实现访问和使用部署的服务指定任何要求。基于JAX-RPC的服务于开发RMI应用程序极为相似(JAX-RPC是使用基于SOAP的RPC和WSDL机制调用异源环境中运行的web服务,集成了远程过程调用(RPC)的性能,通过提供Java与XML/WSDL之间所需的映射,封装了底层SOAP包装和消息交换的复杂操作)。

一、基于Java类开发JAX-RPC服务。
       步骤与RMI开发基本类似:
        1)定义远程接口(服务定义);
        2)实现方案远程接口(服务实现方案);
        3)配置服务;
        4)生成部署文件;
    我实现的例子:  
    1、定义远程接口(StudentInfoIF.java):
/**
 *StudentInfoIF.java
 *Copyright 2005-2-10
 *@author 阿飞
 */
package edu.cun.jws.jaxrpc;

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 *该接口主要用于jax-rpc服务定义(远程接口)
 */
public interface StudentInfoIF extends Remote{
 /**
  *@param studentName 这是一个学生名字的字符串表达
  *@return String 返回学生的信息
  */
    public String getStudentInfo(String studentName) throws RemoteException;
}
    2、实现远程接口(StudentInfoImpl.java):
/**
 *StudentInfoImpl.java
 *Copyright 2005-2-10
 *@author 阿飞
 */
package edu.cun.jws.jaxrpc;
 
import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 *实现远程接口StudentInfoIF,服务实现方案
 *@see StudentInfoIF
 */
public class StudentInfoImpl implements StudentInfoIF{
 
 public String getStudentInfo(String studentName){
  System.out.println("Your name:"+studentName);
  return new String(" Hello");
 }
}
   对上面的源文件进行编译:java *.java  -d .
最后在当前文件夹得到一个edu文件夹,里面就是我们的需要的服务的字节类。
   3、准备部署
      由于是使用JWSDP1.5的开发工具,读者请到SUN网站下载JWSDP开发工具http://java.sun.com/webservices/downloads/webservicespack.html:
我们使用的是jwsdp安装路径/jaxrpc/bin中的工具wsdeploy,该工具先通过调用wscompile  -gen:server来完成编译(由于现在我们部署的对象是Tomcat,所以我们要调用wsdeploy,如果是标准的J2EE实现方案的容器的话,使用wscompile就行了,具体请看帮助文档): 
       因为使用的是wsdeploy,所以要先编写一个jaxrpc-ri.xml文件,针对我们这次的例子:
<?xml version="1.0" encoding="UTF-8"?> 
<webServices 
       xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd" 
       version="1.0" 
       targetNamespaceBase="http://www.cun.edu.cn/jws/wsdl"                 <------------这个是你自己命名的空间
       typeNamespaceBase="http://www.cun.edu.cn/jws/types"                  <------------也是自己定义的
       urlPatternBase="/StudentInfo"> 
       <endpoint 
           name="StudentInfo"  
           interface="edu.cun.jws.jaxrpc.StudentInfoIF"                                 <-----------这个是我们提供的接口                  
           implementation="edu.cun.jws.jaxrpc.StudentInfoImpl"/>                 <-----------实现接口的类
       <endpointMapping 
           endpointName="StudentInfo" 
           urlPattern="/Info"/>                                                                        <-----------等于是web.xml文件中的url-pattern
</webServices> 
        如果需要事先对web.xml文件填充的话:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
 <session-config>
  <session-timeout>60</session-timeout>
 </session-config>
</web-app>
准备部署工作完毕。
    4、部署(要熟悉j2ee部署规范,这里我的部署对象是Tomcat)
   我们创建一个文件夹StudentInfo
以下是文件夹内容
/StudentInfo
       /WEB-INF
              /classes                                                                  <-------把我们的服务程序拷到这里,这里是edu文件夹
              /lib                                                                         <-------必须的包,
      web.xml                                                                         <-------上面我们编写的文件
      jaxrpc-ri.xml                                                                   <-------上一步编写的文件
注意这里必须的包包括JAX-RPC相关的包,还有SAAJ相关的包(JavaMail,JAF,JAXP),我这里用了以下几个包(由于是使用jdk1.5,所以JAXP相关包不在内):activation.jar(JAF),jaxrpc-api.jar,jaxrpc-impl.jar,jaxrpc-spi.jar,mail.jar,saaj-api.jar,saaj-impl.jar;
好了之后,我们打包成一个war文件(由于wsdeploy需要的输入文件是一个war存档文件):
转换到到StudentInfo目录下,设置好运行wsdeploy的运行路径,运行:
    jar cvf   StudentInfo.war  *
    wsdeploy  -o StudentInfoApp.war StudentInfo.war
    最后我们得到一个StudentInfoApp.war文件,该文件就是我们需要的部署web服务的程序。我们把它拷到Tomcat的webapps目录下,就自动部署好了
    5、测试
    在浏览器中输入:http://localhost:8080/StudentInfoApp/Info 

测试成功,web服务部署完毕,客户端的测试的话,自己编写,可以使用java,也可以使用net平台等作为客户端,请参考我的例子:使用SOAP开发java web服务--Axis开发方案 ,就是使用C#作为服务的调用客户端。

    ps:基于JAX-RPC的web服务开发就是这么简单,很多内部转换的内容都已经自动完成了,我们可以把精力集中于商业逻辑上来,欢迎大家加入Java Web Service的开发行列来。

posted on 2005-12-09 17:11 Victor 阅读(589) 评论(0)  编辑  收藏 所属分类: web services

新用户注册  刷新评论列表  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问   管理
相关文章:
  • 使用JAXB处理XML文档--先睹为快
  • JAXM开发Web服务的构架和模式(good2)
  • 用JAXM开发Web服务(good)
  • 用JAXM发送和接收SOAP消息
  • SOAP Header:扩展SOAP能力的途径
  • 使用SOAP开发java web服务--Axis开发方案
  • 基于JAX-RPC的快速Web服务开发方案
  • 深入探索SOAP1.1--使用SAAJ1.2.1
  • 实现安全的AXIS Web服务,第2部分(转)
  • 实现安全的AXIS Web服务,第1部分(转)
 
 
Powered by:
BlogJava
Copyright © Victor