- 浏览: 813176 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (307)
- struts (8)
- hibernate (3)
- spring (32)
- opensourceproject (12)
- javaScript (9)
- primeton EOS (2)
- journey of heart (10)
- Design pattern (6)
- ejb (17)
- point (37)
- Linux&Unix (22)
- ibatis (10)
- AJAX (6)
- DB (26)
- Protocol (6)
- chart (4)
- web server (11)
- webservice (7)
- integration (3)
- tuxedo (5)
- ext (4)
- android (1)
- c/c++ (12)
- JVM (1)
- paginationFrame (2)
- code (2)
- report (1)
- High-performance web (1)
- svn (1)
- JQuery (1)
- workDaily (2)
- cloud (16)
- Python (8)
- English (2)
- shell (5)
- googleCode (1)
- nio (1)
- hyper-v (1)
- debug (3)
- vbs (2)
- openstack (3)
- K8S (1)
- Mesos (0)
- Spark (0)
- Marathon (0)
最新评论
-
钱图大展:
chao2751021 写道lib包哪里去下载,找不到
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
钱图大展:
无法下载
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
fm395728572:
shell脚本中用到了环境变量,但是获取不到,例如脚本中有一句 ...
ganymed-ssh2 for Java -
liuhanjiang:
我qq147229234
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
liuhanjiang:
博主 我利用您提供的方法实现博文中介绍的clickstream ...
大型网站用户行为记录的一个实现--基于clickStream(第一部分)
JAX-WS
JAX-WS规范是一组XML web services的JAVA API。JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。
在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对于SOAP消息。
在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI (service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。
通过web service所提供的互操作环境,我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作。
JAX-WS与JAX-RPC之间的关系
Sun最开始的web services的实现是JAX-RPC 1.1 (JSR 101)。这个实现是基于Java的RPC,并不完全支持schema规范,同时没有对Binding和Parsing定义标准的实现。
JAX-WS2.0 (JSR 224)是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XML Binding (JAXB, JSR 222),在parsing层,使用的是the Streaming API for XML (StAX, JSR 173),同时它还完全支持schema规范。
在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对于SOAP消息。
在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI (service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。
通过web service所提供的互操作环境,我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作。
JAX-WS与JAX-RPC之间的关系
Sun最开始的web services的实现是JAX-RPC 1.1 (JSR 101)。这个实现是基于Java的RPC,并不完全支持schema规范,同时没有对Binding和Parsing定义标准的实现。
JAX-WS2.0 (JSR 224)是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XML Binding (JAXB, JSR 222),在parsing层,使用的是the Streaming API for XML (StAX, JSR 173),同时它还完全支持schema规范。
目的:使用ejb3 的 @WebService 注解开发一个webservice服务端,然后使用JAX-WS 技术完成客户端代码的生成和调用
webservice 服务器端的开发:
步骤1: 写一个webservice 需要传输的对象
package cn.com.xinli.bean; import java.io.Serializable; public class Order implements Serializable { String orderid; String name; public String getOrderid() { return orderid; } public void setOrderid(String orderid) { this.orderid = orderid; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
步骤2: 定义webservice服务器端需要暴漏的方法
package cn.com.xinli.service; import java.util.List; import cn.com.xinli.bean.Order; public interface OrderService { public String getUserName(String name); public Order getOrder(String id); public List<Order> getOrders(); }
步骤3: 定义暴漏方法的实现
package cn.com.xinli.service.impl; import java.util.ArrayList; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.jws.WebMethod; import javax.jws.WebService; import cn.com.xinli.bean.Order; import cn.com.xinli.service.OrderService; /*使用这个注解,就可以这个会话bean中的方法暴漏成webservice方法 * 如果你只想暴漏其中的某些方法,你可以再想对外暴漏的方法上 * 加上@WebMethod 注解,那么没有这个注解的方法就不会暴漏 * 成webservice方法了 * targetNamespace 命名空间 也就是wsdl中的 targetNamespace * name 端点接口的名称 也就是wsdl中的portType name * serviceName 服务的名称 * 不修改上面的3个属性也没关系,就是你发布的wsdl的可读性差 * */ @WebService(targetNamespace="http://xinli.com.cn",name="OrderService", serviceName="OrderServiceBean") /*声明为无状态的会话bean 声明远程接口*/ @Stateless @Remote(OrderService.class) public class OrderServiceBean implements OrderService { public Order getOrder(String orderid) { Order order=new Order(); order.setOrderid(orderid); order.setName("亮亮娃"); return order; } public List<Order> getOrders() { List<Order> persons=new ArrayList<Order>(); Order order1=new Order(); order1.setOrderid("001"); order1.setName("huxl"); Order order2=new Order(); order2.setOrderid("002"); order2.setName("ryp"); persons.add(order1); persons.add(order2); return persons; } public String getUserName(String name) { return name; } }
步骤4: ant 打包
<?xml version="1.0" encoding="UTF-8"?> <project name="Ejb3Webservice" basedir="."> <property name="src.dir" value="${basedir}"/> <property environment="env"/> <property name="jboss.home" value="${env.JBOSS_HOME}"/> <property name="jboss.server.config" value="default"/> <property name="build.dir" value="${basedir}\build"/> <path id="master-classpath" description="设置编译路径"> <fileset file="${jboss.home}\client\*.jar"/> </path> <target name="prepare" description="创建class文件目录"> <delete dir="${build.dir}"/> <mkdir dir="${build.dir}"/> </target> <target name="compile" depends="prepare" description="编译"> <!--只编译以cn开头的--> <javac srcdir="${src.dir}" destdir="${build.dir}" includes="cn/**"> <classpath refid="master-classpath"/> </javac> </target> <target name="ejbjar" description="创建ejb发布包" depends="compile"> <jar jarfile="${basedir}\${ant.project.name}.jar"> <fileset dir="${build.dir}"/> <include name="**/*.class"/> </jar> </target> <target name="deploy" description="发布"> <copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy"/> </target> <target name="undeploy" description="卸载ejb"> <delete file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy"/> </target> </project>
步骤5:验证输入 http://localhost:8080/jbossws/ 找到 View a list of deployed services 点击可以看到你发的webservice的wsdl文件
<!--li><a href="depends" mce_href="/admin/blogs/440338/depends">View installed dependencies</a></li-->
webservice 客户端的开发:
步骤1: 建立一个空的项目,从 https://jax-ws.dev.java.net/2.1.7/ 下载 jax-ws,使用 java -jar JAXWS2.1.7-20090419.jar,解压缩后会有lib ,讲lib下的 jar包加到classpath下
步骤2:使用ant 从服务器的wsdl 生成本地调用框架
<?xml version="1.0" encoding="UTF-8"?> <project name = "WSClient" default="wsclient" basedir ="."> <property name = "src.dir" value = "${basedir}/src"/> <path id="build.classpath" description="设置类路径"> <fileset dir="${basedir}/lib"> <include name="*.jar"></include> </fileset> </path> <target name = "wsclient" description ="生成webservice客户端代码"> <taskdef name = "wsimport" classname ="com.sun.tools.ws.ant.WsImport" classpathref="build.classpath"/> <wsimport wsdl="http://127.0.0.1:8080/Ejb3Webservice/OrderServiceBean?wsdl" sourcedestdir="${src.dir}" package="cn.com.xinli.ws.client" keep="true" verbose ="true" destdir="${basedir}/bin"/> </target> </project>
步骤3:使用junit4 写单元测试
package junit.test; import java.util.List; import org.junit.BeforeClass; import org.junit.Test; import cn.com.xinli.ws.client.Order; import cn.com.xinli.ws.client.OrderService; import cn.com.xinli.ws.client.OrderServiceBean; public class WSTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void getUserName() { OrderServiceBean orderServiceBean=new OrderServiceBean(); /*得到端点接口*/ OrderService orderService=orderServiceBean.getOrderServicePort(); System.out.println(orderService.getUserName("晓亮")); } @Test public void getOrder() { OrderServiceBean orderServiceBean=new OrderServiceBean(); /*得到端点接口*/ OrderService orderService=orderServiceBean.getOrderServicePort(); System.out.println(orderService.getOrder("1").getOrderid()); System.out.println(orderService.getOrder("1").getName()); } @Test public void getOrders() { OrderServiceBean orderServiceBean=new OrderServiceBean(); /*得到端点接口*/ OrderService orderService=orderServiceBean.getOrderServicePort(); List<Order> orderList=orderService.getOrders(); for(Order order:orderList) { System.out.println(order.getOrderid()); System.out.println(order.getName()); } } }
验证: 保证服务器的wsdl 能正确访问,调用单元测试用例 ok!
- Ejb3Webservice.rar (7.2 KB)
- 下载次数: 70
- WSClient.rar (18.1 KB)
- 下载次数: 73
发表评论
-
本地客户端调用 websphere6.1 ejb资源 解决方案
2011-01-21 12:25 1823开发环境: 中我们都是在jboss4.0上部署ejb2. ... -
ejb2.0用本地引用提高EJB访问效率
2009-12-24 15:21 3031用本地引用提高EJB访问效率 EJB 1 ... -
ejb3.0 跨平台,跨JVM调用出现的问题及解决方案
2009-11-09 21:58 2362首先 ... -
ejb3 定时器开发
2009-10-28 08:35 3788定时服务用作在一段特定的时间后执行某段程序 ... -
ejb2.0消息驱动bean的开发(JBOSS4.0.4.GA 环境)
2009-10-23 11:12 2348消息驱动bean主要使用在异步的业务 ... -
ejb3 第10讲 --开发单表映射的实体bean
2009-08-02 23:29 1528目的:使用ejb3 ... -
ejb3 第9讲 --配置jboss数据源
2009-08-02 20:19 1133这个比较简单: 去$JBOSS_HOME\ ... -
ejb3 第8讲 --通过注解方式注入并使用其他EJB或者服务
2009-07-08 08:02 3284情景:有两个bean,一个是HelloWorldBean ... -
ejb3 第7讲 --开发有状态bean
2009-07-05 21:21 1429用 @Stateful 注解的方式表明 bean是有状态 ... -
ejb3 第6讲--开发具有本地接口的无状态bean
2009-07-03 07:01 2859理解: 1.当ejb的服务器端和客户端 ... -
ejb3 第5讲--通过ANT提高EJB应用的开发效率
2009-07-02 22:10 1462<?xml version="1.0" ... -
ejb3 第4讲--把jboss集成进eclipse
2009-06-29 22:45 1291这个比较简单,就不多说了 -
ejb3.0 第2,3讲-开发第一个无状态会话bean和客户端
2009-06-29 22:11 1701ejb中的3种bean: 什么是会话bea ... -
ejb3.0第11讲 --开发消息驱动bean
2009-06-24 08:23 2633概念: 1.java ... -
ejb3.0 --第1讲下载安装运行JBOSS
2009-06-24 07:08 16161.下载地址:jboss4.2.3http://www. ... -
ejb2.0 HelloWord
2008-09-27 07:38 7998中国电信网上营业厅项目是使用ejb2.0开发的,在项目中 ...
相关推荐
51jobduoyehtml爬虫程序代码QZQ2
白色大气风格的商务英语学习培训网站模板.zip
锡林郭勒市五险一金办事指南
警务处内务规定
白色扁平化风格的设计创业公司模板下载.zip
白色大气风格的土建设计公司模板下载.zip
白色大气风格的响应式CSS3模板下载.zip
白色大气风格的个人简历网页模板下载.zip
白色调简洁的咨询公司整站模板下载.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
Origin教程008:热图所需练习数据
白色扁平化风格的企业创意联系方式模板下载.zip
白色大气风格的欧美穿衣风格网站模板下载.zip
白色干净大气的企业网站模板下载.zip
内容概要:本文介绍了一段简单的Python代码,用于在控制台中输出一棵带有装饰的圣诞树。具体介绍了代码结构与逻辑,包括如何计算并输出树形的各层,如何加入装饰元素以及打印树干。还提供了示例装饰字典,允许用户自定义圣诞树装饰位置。 适用人群:所有对Python编程有一定了解的程序员,尤其是想要学习控制台图形输出的开发者。 使用场景及目标:适用于想要掌握如何使用Python代码创建控制台艺术,特别是对于想要增加节日氛围的小项目。目标是帮助开发者理解和实现基本的字符串操作与格式化技巧,同时享受创造乐趣。 其他说明:本示例不仅有助于初学者理解基本的字符串处理和循环机制,而且还能激发学习者的编程兴趣,通过调整装饰物的位置和树的大小,可以让输出更加个性化和丰富。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
白色大气风格响应式通用后台管理网站模板.zip
白色风格的广告设计公司网站模板下载.rar
2008-2020年各省技术服务水平相关指标数据 1.时间:2008-2020年 2.指标:行政区划代码、地区、年份、信息传输、软件和信息技术服务业城镇单位就业人员(万人)、软件业务收入(万元)、高技术产品出口额占商品出口额比重(%) 3.范围:31省 4.来源:科技年鉴、国家统计J
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;