谈谈EJB是怎样公布Web Service的
定义
Web Service是自描写叙述、自包括的可用网络模块,能够执行详细的业务功能。
准备
步骤
创建Web Service
- 建立一个POJO endpoint
package com.foshanshop.ws; import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding; @WebService(name="HelloWorld",
targetNamespace="http://com.foshanshop.ws",
serviceName="HelloWorldService")
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class HelloWorldService { @WebMethod
public String sayHello(String name) {
System.out.println("client调用了server端的代码");
return name + "说:这是一个简单的Web測试服务! ";
}
}
- 把endpoint定义成Servlet
<servlet>
<servlet-name>HelloWorldService</servlet-name>
<servlet-class>com.foshanshop.ws.HelloWorldService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldService</servlet-name>
<url-pattern>/HelloWorldService/*</url-pattern>
</servlet-mapping>
- 把endpoint打包成war包
点击“View a list of deployed services”后,就能够看到已经公布的Web Services了。例如以下图
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFwcHlsZWU2Njg4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFwcHlsZWU2Njg4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" style="background-color:inherit">
创建client
package com.foshanshop.ws; import ws.foshanshop.com.HelloWorld;
import ws.foshanshop.com.HelloWorldService; public class TestHelloWorld { /**
* @param args
*/
public static void main(String[] args) {
HelloWorldService helloWorldService = new HelloWorldService();
HelloWorld helloWorld = helloWorldService.getHelloWorldPort();
System.out.println(helloWorld.sayHello("小星星"));
}
}
输出
- client输出
- 服务端输出
小结
由此能够看出。在下面三种情况下。使用 WebService会带来极大的优点。
- 跨防火墙的通信
另外,这样一个由WebService组成的中间层。全然能够在应用程序集 成或其他场合下重用。最后,通过WebService把应用程序的逻辑和数据“暴露”出来,还能够让其他平台上的客户重用这些应用程序。
- 应用程序集成
- B2B的集成
这样就大大降低了花在B2B集成上的时间和成本。让很多原本无法承受EDI的中小企业也能实现B2B集成。
- 软件和数据重用
最主要的形式是源码模块或者类一级的重用,还有一种形式是二进制形式的组件重用。
- 单机应用程序
当中一些仅仅须要与本机上的其他程序通信。在这样的情况下,最好就不要用WebService,仅仅要用本地的 API就能够了。COM非常适合于在这样的情况下工作,由于它既小又快。执行在同一台server上的server软件也是这样。
最好直接用COM或其他本地的API来 进行应用程序间的调用。当然WebService也能用在这些场合,但那样不仅消耗太大,并且不会带来不论什么优点。
- 局域网的同构应用程序
在这些程序里,使用DCOM会比SOAP/HTTP有效得多。
与此相类似,假设一个.NET程序要连接到局域网上的还有一个.NET程序,应该使用.NETremoting。有趣的是。在.NETremoting 中。也能够指定使用SOAP/HTTP来进行WebService调用。只是不妨直接通过TCP进行RPC调用,那样会有效得多。
最新文章
- 5.1 JS中Object类型
- MySQL 临时表
- (转载)afxres找不到问题
- 如何提高Service的优先级避免被杀死或者杀死后如何再次重启Service?
- Git工作流指南:集中式工作流
- 解决maven Generating project in Interactive mode卡死问题(转)
- PHP连接Mysql服务器的操作
- angulajs 当input使用 bootstrap的email类型时,如果是无效的email格式,则ng-model无效的情况
- 【stm32中断优先级--珍藏版】
- java Gui编程 事件监听机制
- SpringMVC源码情操陶冶-View视图渲染
- 当GDPR来敲门,中国互联网企业该如何应对?
- git 入门教程之github 教程
- python字符串面试题:找出一个字符串中第一个字母和最后一个字符是第一次重复,中间没有重复且最长的子串
- AGC027 B - Garbage Collector 枚举/贪心
- 【校招面试 之 C/C++】第16题 C++ new和delete的实现原理
- CCPC-Wannafly Winter Camp Day3 (Div2, onsite)
- 【YY的GCD】
- Shell学习——子shell操作记录转储
- UVa 10766 Organising the Organisation (生成树计数)
热门文章
- 问题:Linux 输入任何命令都显示 -bash: fork: Cannot allocate memory
- jquery 分页功能
- [Bzoj5359][Lydsy1805月赛]寻宝游戏(dp)
- 配置tomcat启动参数-Dfile.encoding=UTF-8后,IDEA控制台乱码
- Ubuntu 16.04下使用Wine安装文件比对工具Beyond Compare 4
- EventBus3.0使用笔记.md
- [LeedCode OJ]#85 Maximal Rectangle
- Windows 无法卸载IE9怎么办
- cas 单点登录(SSO)之中的一个: jasig cas-server 安装
- (利用DOM)在新打开的页面点击关闭当前浏览器窗口