以下示例,由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. nodejs events模块

    var EventEmitter = require('events').EventEmitter; var emitter = new EventEmitter(); console.log(emi ...

  2. 修改Mac系统的默认截图保存路径到指定目录

    注:此文仅针对mac系统如果你是mac用户,会发现桌面经常一团糟,桌面到处都是平时的截图(mac系统的截图是command+shift+3 和 command+shift+4 两个快捷命令) 之前一直 ...

  3. 在Eclipse中导入SVN库里的Maven项目

    长期使用Intellij 对于Eclipse的东西都生疏了... 做了个小教程说明Eclipse下导入Maven工程的步骤以备不时之需 1. 安装maven插件 a) 下载maven http://m ...

  4. jenkins打包成功,部署失败

    环境一直正常,更新了tomcat版本后自动部署报错 ERROR: Publisher hudson.plugins.deploy.DeployPublisher aborted due to exce ...

  5. SQL Server(九)——事务

    事务: 保障流程的完整执行,就像银行取钱,先在你账上扣钱,然后存入别人的账上:但是从你账上扣完钱了,突然网断了,对方没有收到钱,那么此时你的钱也没了,别人的钱也没加上,事务为了防止此类情况的出现. 事 ...

  6. 遍历map的常用方法

    Map< String, String> map = new HashMap<String, String>();  map.put("a", " ...

  7. 安装mysql odbc遇到error 1918.errror installing ODBC driver mysql ODBC 5.3 ANSI Drive

    环境:Windows server2008r2 安装mysql-connector-odbc-5.3.6-win32 报错 相信错误信息:Error 1918.errror installing OD ...

  8. ubuntu下eclipse scala开发插件(Scala IDE for Eclipse)安装

    1. 环境介绍 系统:ubuntu16.04(不过和系统版本关系不大) elipse:Neon.1aRelease (4.6.1) 2. 插件介绍 Scala IDE for eclipse是elip ...

  9. 聚合及UML表示

     聚合聚合是一种特别类型的关联,用于描述“总体到局部”的关系. 聚合分成: 基本聚合与合成聚合   基本聚合: 基本聚合一般也简称为聚合(Aggregation).在基本的聚合关系中, 部分类(B)  ...

  10. Bootstrap学习(3)

    Bootstrap 图片  Bootstrap 对图片的支持.Bootstrap 提供了三个可对图片应用简单样式的 class: .img-rounded:添加 border-radius:6px 来 ...