• 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 }
    HelloWorldService

    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 }
    OrderService

    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 }
    Product

    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 }
    Order

    三、服务接口实现

    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 }
    HelloWorldServiceImpl

    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 }
    OrderServiceImpl

    四、配置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>
    web.xml

    该文件开发时,位置于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("
    order 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 }
    java ws client (c#)

    服务端演示源码:helloworld-ws.zip


     

  • 相关阅读:
    单点登录cas常见问题(八)
    11G新特性 -- variable size extents
    11G新特性 -- ASM Fast Mirror Resync
    redhat 6.4 安装VirtualBox自动增强功能功:unable to find the sources of your current Linux kernel
    LINUX使用DVD光盘或者ISO作为本地YUM源
    数据库报ORA-00600: 内部错误代码, 参数: [17059],并产生大量trace日志文件
    Putty设置删除
    ssh/scp 远程连接ssh非默认端口方法
    查看LINUX版本
    RHCE7 -- systemctl命令
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/jboss-webservice-sample.html
Copyright © 2020-2023  润新知