<o:p> </o:p>接手的项目用到了基于stateless session bean 的webservice,以前没有怎么接触过ws.整理一下自己的学习资料:<o:p>
</o:p>
• Quick introduction Webservice<o:p></o:p>
HTTP is supported by all Internet browsers and servers. Firewalls and proxy servers will not block this kind of traffic.<o:p>
</o:p>
1.Soap:Simple Object Access Protocol
2.WSDL:Web Services Description Language
3.UDDI :Universal Description, Discovery, and Integration<o:p>
</o:p>
应用场合: Reusable application components or connect existing software<o:p>
</o:p>
目前比较流行的两个Framework:<o:p></o:p>
1. Axis is a an implementation of the SOAP. JBoss 4.0.3 and lower are based on axis.<o:p></o:p>
2. xfire is a next-generation java SOAP framework. Feature: POJO, high performance, spring integration<o:p>
</o:p>
• SLSB exposed to WS<o:p>
</o:p>
在In J2EE1.4和EJB2.1规范中为SLSB增加了一种接口: service endpoint interface (SEI).<o:p></o:p>
ejb-jar.xml如下:
<session> </session>
xml 代码
- <session >
- <ejb-name>HelloWorld<!---->ejb-name>
- <home> services.ejb.HelloWorldHome<!---->home>
- <remote> services.ejb.HelloWorld<!---->remote>
- <service-endpoint>services.ejb.HelloWorld<!---->service-endpoint>
- <ejb-class> services.ejb.HelloWorldSession<!---->ejb-class>
- <session-type>Stateless<!---->session-type>
- <transaction-type>Container<!---->transaction-type>
- <!---->session>
<transaction-type>
</transaction-type>
<o:p>
</o:p>
一般在J2EE1.4平台上开发时,需要有四个xml文件,分别是:<o:p></o:p>
ejb-jar.xml;
wsdl;
mapping.xml主要用来定义在soap中使用的数据类型定义;
webservice.xml主要定义slsb所使用的mapping文件和wsdl.<o:p>
</o:p>
可以使用JAX-RPC开发包生成所需要的mapping.xml和wsdl文件,该开发包被包括在jwsdp中可在SUN的网站上下载。目前是支持JDK1.5的JAX-WS.<o:p>
</o:p>
基于SLSB的webservice的开发真个麻烦呀,又是remote又是bean的,写build.xml时就花了好长时间。不过还好网上有例子,用xdoclet结合axis1.x的java2wsdl命令以及<o:p></o:p>
jwsdb的wscompile命令基本可以搞定。<o:p>
</o:p>
听说EJB3.0遵循JSR181的annotations,呵呵,那样stateless session bean就可以非常方便的发布为WS了,还不用强制remote <o:p>
</o:p>
build.xml部分:
<target name="wsdeploy" depends="wsee"><exec executable="F:/Sun/jwsdp-1.5/jaxrpc/bin/wscompile.bat"><arg line="-verbose"><arg line="-cp ${buildDir}"><arg line="-gen:server"><arg line="-nd ${buildDir}/META-INF/wsdl"><arg line="-d ${srcDir}"><arg line="-mapping ${buildDir}/META-INF/jaxrpc-mapping.xml"> </arg></arg></arg></arg></arg></arg></exec></target>
xml 代码
-
- <taskdef resource="axis-tasks.properties" classpathref="classpath" />
-
- <target name="ejbdoclet">
- <taskdef classname="xdoclet.modules.ejb.EjbDocletTask" classpathref="xdoclet.classpath"
- name="ejbdoclet" />
- <ejbdoclet ejbSpec="2.1" destDir="${srcDir}">
- <fileset dir="${srcDir}" includes="services/ejb/HelloWorldBean.java" />
- <homeinterface />
- <remoteinterface />
- <service-endpoint />
- <utilobject includeGUID="true" />
- <deploymentdescriptor destdir="${buildDir}/META-INF" validatexml="true"
- MergeDir="fake-to-debug" />
- <jboss version="4.0" unauthenticatedPrincipal="nobody" xmlencoding="UTF-8"
- destdir="${buildDir}/META-INF" validatexml="true" generateRelations="no" preferredrelationmapping="relation-table" />
- <!---->ejbdoclet>
- <!---->target>
-
- <target name="wsee">
- <taskdef classpathref="xdoclet.classpath" classname="xdoclet.modules.wsee.WseeDocletTask"
- name="wseedoclet" />
- <wseedoclet jaxrpcMappingFile="mappings.xml" wsdlFile="HelloWorldService.wsdl"
- destDir="${buildDir}" force="true" verbose="true">
- <fileset dir="${srcDir}" includes="**/HelloWorldBean.java" />
- <deploymentdescriptor>
- <configParam name="Name" value="HelloWorldAxisService" />
- <!---->deploymentdescriptor>
- <!---->wseedoclet>
- <replace file="${buildDir}/webservices.xml" token="WEB-INF/HelloWorldService.wsdl"
- value="META-INF/wsdl/HelloWorldService.wsdl" />
- <replace file="${buildDir}/webservices.xml" token="WEB-INF/mappings.xml"
- value="META-INF/jaxrpc-mapping.xml" />
- <!---->target>
-
-
- <target name="wsdeploy" depends="wsee">
- <exec executable="F:/Sun/jwsdp-1.5/jaxrpc/bin/wscompile.bat">
- <arg line="-verbose" />
- <arg line="-cp ${buildDir}" />
- <arg line="-gen:server" />
- <arg line="-nd ${buildDir}/META-INF/wsdl" />
- <arg line="-d ${srcDir}" />
- <arg line="-mapping ${buildDir}/META-INF/jaxrpc-mapping.xml" />
- <arg line="${srcDir}/resource/wsconfig.xml" />
- <!---->exec>
- <!---->target>
<o:p></o:p>
分享到:
相关推荐
SLSB Improving the Steganographic Algorithm LSB
基于JCF的代码生成工具 博文链接:https://onecan.iteye.com/blog/83136
基于此,将支持动态数据索引的LSH和B-tree结合,构建新的SLSB-forest索引结构,使散列桶里的数据维持在一个合理的区间。针对SLSB-forest提出了两种查询算法:快速查找和准确率优先查找,并通过理论和实验证明查找...
SLSB带接口的远程演示具有接口但具有仅WAR部署的现代Java EE EJB的演示。 Bean类同时使用@LocalBean和@Remote进行注释,并且都被注入到JSF托管Bean中并直接使用。
SLSB无接口演示现代Java EE EJB的演示,它无接口且仅具有WAR部署。 Bean类同时使用@LocalBean和@Remote进行注释,并且都被注入到JSF托管Bean中并直接使用。
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用服务器...
testfun.zip,一个轻量级的junit运行程序,允许测试jee代码,比如jpa、slsb和jax-rs,而不需要
2.5.3. 基于Annotation的控制器 2.5.4. Spring MVC的表单标签库 2.5.5. 对Tiles 2 支持 2.5.6. 对JSF 1.2支持 2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 ...
2.5.3. 基于Annotation的控制器 2.5.4. Spring MVC的表单标签库 2.5.5. 对Tiles 2 支持 2.5.6. 对JSF 1.2支持 2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 ...
18.2.2. 访问本地的无状态Session Bean(SLSB) 18.2.3. 访问远程SLSB 18.3. 使用Spring提供的辅助类实现EJB组件 19. JMS 19.1. 简介 19.2. 使用Spring JMS 19.2.1. JmsTemplate 19.2.2. 连接工厂 19.2.3. ...
Spring Framework 开发参考手册 Rod Johnson ...18.2.2. 访问本地的无状态Session Bean(SLSB) 18.2.3. 访问远程SLSB 18.3. 使用Spring提供的辅助类实现EJB组件 19. JMS 19.1. 简介 19.2. 使用Spring JMS ...
CPestore 是另一个使用开源 COTS 的更短、更干净的 Petstore。 它的特点是: 生成带有查找器的实体 bean JAAS;... 由 Xdoclet 生成 SLSB; Goodie (Weblogic + Oracle) 和 Freebie (Jboss + MySQL) 构建无代码更改。