以下示例,由jboss quickstart示例代码得来:

一、创建一个常规的dynamic web项目,建议支持maven ,项目的关键属性参考下图:

二、定义服务接口及参数对象

HelloWorldService

 package org.jboss.as.quickstarts.wshelloworld;

 import java.util.List;

 import javax.jws.WebMethod;
import javax.jws.WebService; @WebService(targetNamespace = "http://www.jboss.org/jbossas/quickstarts/wshelloworld/HelloWorld")
public interface HelloWorldService { @WebMethod
public String sayHello(); @WebMethod
public String sayHelloToName(String name); @WebMethod
public String sayHelloToNames(List<String> names);
}

HelloWorldService

OrderService

 package org.jboss.as.quickstarts.wshelloworld;

 import java.util.List;

 import javax.jws.WebMethod;
import javax.jws.WebService; import org.jboss.as.quickstarts.wshelloworld.model.Order;
import org.jboss.as.quickstarts.wshelloworld.model.Product; @WebService(targetNamespace = "http://www.jboss.org/jbossas/quickstarts/wshelloworld/Order")
public interface OrderService { @WebMethod
Order orderProduct(List<Product> products); }

OrderService

Product

 package org.jboss.as.quickstarts.wshelloworld.model;

 import java.io.Serializable;

 public class Product implements Serializable {

     private static final long serialVersionUID = -2823691181671902736L;

     private String productName;

     public String getProductName() {
return productName;
} public void setProductName(String productName) {
this.productName = productName;
} public double getAmount() {
return amount;
} public void setAmount(double amount) {
this.amount = amount;
} private double amount; }

Product

Order

 package org.jboss.as.quickstarts.wshelloworld.model;

 import java.io.Serializable;
import java.util.List; public class Order implements Serializable { private static final long serialVersionUID = 5377627580623153289L; private List<Product> products; public List<Product> getProducts() {
return products;
} public void setProducts(List<Product> products) {
this.products = products;
} public double getAmount() {
return amount;
} public void setAmount(double amount) {
this.amount = amount;
} public String getOrderNo() {
return orderNo;
} public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
} private double amount;
private String orderNo; }

Order

三、服务接口实现

HelloWorldServiceImpl

 package org.jboss.as.quickstarts.wshelloworld;

 import java.util.ArrayList;
import java.util.List; import javax.jws.WebService; @WebService(serviceName = "HelloWorldService", portName = "HelloWorld", name = "HelloWorld", endpointInterface = "org.jboss.as.quickstarts.wshelloworld.HelloWorldService", targetNamespace = "http://www.jboss.org/jbossas/quickstarts/wshelloworld/HelloWorld")
public class HelloWorldServiceImpl implements HelloWorldService { @Override
public String sayHello() {
return "Hello World!";
} @Override
public String sayHelloToName(final String name) {
final List<String> names = new ArrayList<String>();
names.add(name); return sayHelloToNames(names);
} @Override
public String sayHelloToNames(final List<String> names) {
return "Hello " + createNameListString(names);
} private String createNameListString(final List<String> names) { if (names == null || names.isEmpty()) {
return "Anonymous!";
} final StringBuilder nameBuilder = new StringBuilder();
for (int i = 0; i < names.size(); i++) { if (i != 0 && i != names.size() - 1)
nameBuilder.append(", ");
else if (i != 0 && i == names.size() - 1)
nameBuilder.append(" & "); nameBuilder.append(names.get(i));
} nameBuilder.append("!"); return nameBuilder.toString();
}
}

HelloWorldServiceImpl

OrderServiceImpl

 package org.jboss.as.quickstarts.wshelloworld;

 import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List; import javax.enterprise.inject.New;
import javax.jws.WebService;
import javax.lang.model.element.VariableElement; import org.jboss.as.quickstarts.wshelloworld.model.Order;
import org.jboss.as.quickstarts.wshelloworld.model.Product; @WebService(serviceName = "OrderService", portName = "Order", name = "Order", endpointInterface = "org.jboss.as.quickstarts.wshelloworld.OrderService", targetNamespace = "http://www.jboss.org/jbossas/quickstarts/wshelloworld/Order")
public class OrderServiceImpl implements OrderService { @Override
public Order orderProduct(List<Product> products) {
Order order = new Order();
order.setProducts(products); double sum = 0;
for (Product p : products) {
sum += p.getAmount(); } String orderNo = new SimpleDateFormat("yyMMddHHmmssSSS")
.format(Calendar.getInstance().getTime()); order.setAmount(sum);
order.setOrderNo(orderNo);
return order;
} }

OrderServiceImpl

四、配置web.xml (可选)

 <?xml version="1.0"?>

 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>HelloWorldService</servlet-name>
<servlet-class>org.jboss.as.quickstarts.wshelloworld.HelloWorldServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldService</servlet-name>
<url-pattern>/HelloWorld/*</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>OrderService</servlet-name>
<servlet-class>org.jboss.as.quickstarts.wshelloworld.OrderServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>OrderService</servlet-name>
<url-pattern>/Order/*</url-pattern>
</servlet-mapping>
</web-app>

web.xml

该文件开发时,位置于src/main/webapp/WEB-INF下,配置web.xml的主要作用是给WebService指定显示的别名以及访问时的url路径,这是可选步骤

五、部署到Jboss

部署完成后,可在jboss管理面板中看到这二个web service

六、客户端程序验证(c#版)

可用任何语言调用java web service验证,下面是c#版的示例代码:

 using System;
using java_ws_client.java.hello;
using java_ws_client.java.order; namespace java_ws_client
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("hello world service is testing..."); using (HelloWorldServiceClient client = new HelloWorldServiceClient())
{
var msg = client.sayHelloToName("jimmy");
Console.WriteLine(msg);
} Console.WriteLine("\norder service is testing..."); using (OrderServiceClient client = new OrderServiceClient())
{
var order = client.orderProduct(new product[] { new product() { productName = "book", amount = }, new product() { productName = "iphone", amount = } }); Console.WriteLine(String.Format("orderNo:{0},amount:{1},product:{2}", order.orderNo, order.amount, order.products.Length));
} Console.ReadKey();
}
}
}

java ws client (c#)

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

jboss上的soap web service开发示例的更多相关文章

  1. 翻译-使用Spring调用SOAP Web Service

    原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP ...

  2. 翻译-使用Spring WebService生成SOAP Web Service

    原文链接:http://spring.io/guides/gs/producing-web-service/ 生成SOAP web service 该指南将带领你使用Spring创建一个基于SOAP的 ...

  3. JAX-RS 方式的 RESTful Web Service 开发

    JAX-RS 方式的 RESTful Web Service 开发 ——基于 CXF+Spring 的实现 Web Service 目前在风格上有两大类,一个是基于 SOAP 协议,一个是完全遵循 H ...

  4. PHP soap Web Service 使用SoapDiscovery.class.php 生成wsdl文件

    PHP soap web service 使用wsdl文件 demo: ============================================================== 服 ...

  5. SOAP web service用AFNetWorking实现请求

    问: This is my current call to (asmx) SOAP web service: NSString *soapMessage = [NSString stringWithF ...

  6. axis1,xfire,jUnit 测试案列+开Web Service开发指南+axis1.jar下载 代码

    axis1,xfire,jUnit 测试案列+Web Service开发指南(中).pdf+axis1.jar下载    代码 项目和资源文档+jar 下载:http://download.csdn. ...

  7. 微软实战训练营(X)重点班第(1)课:SOA必备知识之ASP.NET Web Service开发实战

    微软实战训练营 上海交大(A)实验班.(X)重点班 内部课程资料 链接:http://pan.baidu.com/s/1jGsTjq2 password:0wmf <微软实战训练营(X)重点班第 ...

  8. REST和SOAP Web Service的区别比较

    本文转载自他人的博客,ArcGIS Server 推出了 对 SOAP 和 REST两种接口(用接口类型也许并不准确)类型的支持,本文非常清晰的比较了SOAP和Rest的区别联系! ///////// ...

  9. 二、Web Service开发(.net)

    .net平台内建了对Web Service的支持,包括Web Service的构建和使用.与其它开发平台不同,使用.net平台,你不需要其他的工具或者SDK就可以完成Web Service的开发了.. ...

随机推荐

  1. C#复习①

    C#复习① 2016年6月15日 08:19 Main Introduction of C# 简单介绍C# 1. C# is very similar to Java (70% Java, 10% C ...

  2. WPF学习之路(四)路由

    路由事件概述 功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件. 实现定义:路由事件是一个 CLR 事件,可以由RouteEvent 类的实例提供 ...

  3. WPF学习之路(二) XAML(续)

    属性 简单属性 前面用到的Width/Height都是简单属性,其赋值一定要放到双引号里 XAML解析器会根据属性的类型执行隐式转换 与C#的区别 SolidBrush.Color = Colors. ...

  4. yii2 rbac权限控制之菜单menu详细教程

    作者:白狼 出处:http://www.manks.top/article/yii2_rbac_menu本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...

  5. web项目修改名称问题

    第一步:鼠标点击项目按F2 ,然后修改名称 第二步:备份web.xml 第三步:鼠标点击项目右键  选properties(一般位于最后面)  再在弹出框中输入WEB 第四步:将备份的web.xml文 ...

  6. XML 在SQLServer中的使用

    SQL Server对于XML支持的核心在于XML数据的格式,这种数据类型可以将XML的数据存储于数据库的对象中,比如variables, columns, and parameters.当你用XML ...

  7. 金士顿U盘,群联PS2251-60主控,量产CDROM教程

    量产前准备: 1. 插上U盘,(台式机的话插机箱后面) 2. 一台电脑,最好不要装杀毒软件(特别是360) 3. ISO镜像文件 4. 下载MPALL v3.29.0B.zip 请先耐心看完教程: 1 ...

  8. 使用 python 发送邮件

    1.使用python 写发邮箱代码: def sendmail (): import smtplib from email.mime.text import MIMEText from email.u ...

  9. Activity中使用Intent实现页面跳转与参数的传递(转)

    新建一个FirstAvtivity.java package com.zhuguangwei; import android.app.Activity; import android.content. ...

  10. centos---无线上网的电脑所安装的虚拟机网络设置

    1.共享设置 找到本地的无线网卡,右键---属性---共享,设置如下 2.修改VMware Network Adapter VMnet1 选中VMware Network Adapter VMnet1 ...