以下示例,由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