jboss上的soap web service开发示例
时间:2022-04-24
本文章向大家介绍jboss上的soap web service开发示例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
以下示例,由jboss quickstart示例代码得来:
一、创建一个常规的dynamic web项目,建议支持maven ,项目的关键属性参考下图:
二、定义服务接口及参数对象
HelloWorldService
1 package org.jboss.as.quickstarts.wshelloworld;
2
3 import java.util.List;
4
5 import javax.jws.WebMethod;
6 import javax.jws.WebService;
7
8
9
10 @WebService(targetNamespace = "http://www.jboss.org/jbossas/quickstarts/wshelloworld/HelloWorld")
11 public interface HelloWorldService {
12
13
14 @WebMethod
15 public String sayHello();
16
17
18 @WebMethod
19 public String sayHelloToName(String name);
20
21
22 @WebMethod
23 public String sayHelloToNames(List<String> names);
24 }
OrderService
1 package org.jboss.as.quickstarts.wshelloworld;
2
3 import java.util.List;
4
5 import javax.jws.WebMethod;
6 import javax.jws.WebService;
7
8 import org.jboss.as.quickstarts.wshelloworld.model.Order;
9 import org.jboss.as.quickstarts.wshelloworld.model.Product;
10
11 @WebService(targetNamespace = "http://www.jboss.org/jbossas/quickstarts/wshelloworld/Order")
12 public interface OrderService {
13
14 @WebMethod
15 Order orderProduct(List<Product> products);
16
17 }
Product
1 package org.jboss.as.quickstarts.wshelloworld.model;
2
3 import java.io.Serializable;
4
5 public class Product implements Serializable {
6
7 private static final long serialVersionUID = -2823691181671902736L;
8
9 private String productName;
10
11 public String getProductName() {
12 return productName;
13 }
14
15 public void setProductName(String productName) {
16 this.productName = productName;
17 }
18
19 public double getAmount() {
20 return amount;
21 }
22
23 public void setAmount(double amount) {
24 this.amount = amount;
25 }
26
27 private double amount;
28
29
30
31 }
Order
1 package org.jboss.as.quickstarts.wshelloworld.model;
2
3 import java.io.Serializable;
4 import java.util.List;
5
6 public class Order implements Serializable {
7
8 private static final long serialVersionUID = 5377627580623153289L;
9
10 private List<Product> products;
11
12 public List<Product> getProducts() {
13 return products;
14 }
15
16 public void setProducts(List<Product> products) {
17 this.products = products;
18 }
19
20 public double getAmount() {
21 return amount;
22 }
23
24 public void setAmount(double amount) {
25 this.amount = amount;
26 }
27
28 public String getOrderNo() {
29 return orderNo;
30 }
31
32 public void setOrderNo(String orderNo) {
33 this.orderNo = orderNo;
34 }
35
36 private double amount;
37 private String orderNo;
38
39 }
三、服务接口实现
HelloWorldServiceImpl
1 package org.jboss.as.quickstarts.wshelloworld;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import javax.jws.WebService;
7
8 @WebService(serviceName = "HelloWorldService", portName = "HelloWorld", name = "HelloWorld", endpointInterface = "org.jboss.as.quickstarts.wshelloworld.HelloWorldService", targetNamespace = "http://www.jboss.org/jbossas/quickstarts/wshelloworld/HelloWorld")
9 public class HelloWorldServiceImpl implements HelloWorldService {
10
11 @Override
12 public String sayHello() {
13 return "Hello World!";
14 }
15
16 @Override
17 public String sayHelloToName(final String name) {
18 final List<String> names = new ArrayList<String>();
19 names.add(name);
20
21 return sayHelloToNames(names);
22 }
23
24 @Override
25 public String sayHelloToNames(final List<String> names) {
26 return "Hello " + createNameListString(names);
27 }
28
29 private String createNameListString(final List<String> names) {
30
31 if (names == null || names.isEmpty()) {
32 return "Anonymous!";
33 }
34
35 final StringBuilder nameBuilder = new StringBuilder();
36 for (int i = 0; i < names.size(); i++) {
37
38 if (i != 0 && i != names.size() - 1)
39 nameBuilder.append(", ");
40 else if (i != 0 && i == names.size() - 1)
41 nameBuilder.append(" & ");
42
43 nameBuilder.append(names.get(i));
44 }
45
46 nameBuilder.append("!");
47
48 return nameBuilder.toString();
49 }
50 }
OrderServiceImpl
1 package org.jboss.as.quickstarts.wshelloworld;
2
3 import java.text.SimpleDateFormat;
4 import java.util.ArrayList;
5 import java.util.Calendar;
6 import java.util.Date;
7 import java.util.List;
8
9 import javax.enterprise.inject.New;
10 import javax.jws.WebService;
11 import javax.lang.model.element.VariableElement;
12
13 import org.jboss.as.quickstarts.wshelloworld.model.Order;
14 import org.jboss.as.quickstarts.wshelloworld.model.Product;
15
16 @WebService(serviceName = "OrderService", portName = "Order", name = "Order", endpointInterface = "org.jboss.as.quickstarts.wshelloworld.OrderService", targetNamespace = "http://www.jboss.org/jbossas/quickstarts/wshelloworld/Order")
17 public class OrderServiceImpl implements OrderService {
18
19 @Override
20 public Order orderProduct(List<Product> products) {
21 Order order = new Order();
22 order.setProducts(products);
23
24 double sum = 0;
25 for (Product p : products) {
26 sum += p.getAmount();
27
28 }
29
30 String orderNo = new SimpleDateFormat("yyMMddHHmmssSSS")
31 .format(Calendar.getInstance().getTime());
32
33 order.setAmount(sum);
34 order.setOrderNo(orderNo);
35 return order;
36 }
37
38 }
四、配置web.xml (可选)
1 <?xml version="1.0"?>
2
3 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
6 <servlet>
7 <servlet-name>HelloWorldService</servlet-name>
8 <servlet-class>org.jboss.as.quickstarts.wshelloworld.HelloWorldServiceImpl</servlet-class>
9 </servlet>
10 <servlet-mapping>
11 <servlet-name>HelloWorldService</servlet-name>
12 <url-pattern>/HelloWorld/*</url-pattern>
13 </servlet-mapping>
14
15 <servlet>
16 <servlet-name>OrderService</servlet-name>
17 <servlet-class>org.jboss.as.quickstarts.wshelloworld.OrderServiceImpl</servlet-class>
18 </servlet>
19 <servlet-mapping>
20 <servlet-name>OrderService</servlet-name>
21 <url-pattern>/Order/*</url-pattern>
22 </servlet-mapping>
23 </web-app>
该文件开发时,位置于src/main/webapp/WEB-INF下,配置web.xml的主要作用是给WebService指定显示的别名以及访问时的url路径,这是可选步骤
五、部署到Jboss
部署完成后,可在jboss管理面板中看到这二个web service
六、客户端程序验证(c#版)
可用任何语言调用java web service验证,下面是c#版的示例代码:
1 using System;
2 using java_ws_client.java.hello;
3 using java_ws_client.java.order;
4
5 namespace java_ws_client
6 {
7 class Program
8 {
9 static void Main(string[] args)
10 {
11 Console.WriteLine("hello world service is testing...");
12
13 using (HelloWorldServiceClient client = new HelloWorldServiceClient())
14 {
15 var msg = client.sayHelloToName("jimmy");
16 Console.WriteLine(msg);
17 }
18
19 Console.WriteLine("norder service is testing...");
20
21 using (OrderServiceClient client = new OrderServiceClient())
22 {
23 var order = client.orderProduct(new product[] { new product() { productName = "book", amount = 2 }, new product() { productName = "iphone", amount = 3 } });
24
25 Console.WriteLine(String.Format("orderNo:{0},amount:{1},product:{2}", order.orderNo, order.amount, order.products.Length));
26 }
27
28 Console.ReadKey();
29 }
30 }
31 }
服务端演示源码:helloworld-ws.zip
- 【编程基础】C++初学者需掌握的10个C++特性(中)
- 一步步教你弹性框架-中篇
- 细说ReactiveCocoa的冷信号与热信号系列(2)
- 谈谈个人网站的建立(三)—— 定时任务
- 细说ReactiveCocoa的冷信号与热信号系列(1)
- 【美团技术团队博客】前端组件化开发实践
- Spring中Bean
- 跟Google学写代码--Chromium/base--windows_version源码学习及应用
- 一步步教你弹性框架-下篇
- R语言与机器学习(分类算法)朴素贝叶斯算法
- 【美团技术团队博客】RACSignal的Subscription深入分析
- 谈谈个人网站的建立(八)—— 缓存的使用
- 【编程基础】System.arraycopy()和 Arrays.copyOf()
- 移动端 模拟手机联系人触摸A~Z导航
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Kubernetes 的新武器:层级命名空间
- 手撕distributed ram类型同步FIFO
- 解决PIL透明的图片放在新图片上报错
- Dissonance 使用(一)
- Dissonance 使用(三)
- 从代码角度看各类子域名收集工具
- Shiro-550 PoC 编写日记
- k8s代码走读---client-go编程交互基础
- 故障恢复:一次底层超融合故障导致的异常处理
- JavaSE语法
- 链表:听说过两天反转链表又写不出来了?
- 汇总:MySQL 8.0 运维便捷命令
- 链表:一道题目考察了常见的五个操作!
- 性能测试必备知识(11)- 怎么理解内存中的Buffer和Cache?
- 神经网络-感知器(二):Python代码实现