jboss上的soap web service开发示例
以下示例,由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开发示例的更多相关文章
- 翻译-使用Spring调用SOAP Web Service
原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP ...
- 翻译-使用Spring WebService生成SOAP Web Service
原文链接:http://spring.io/guides/gs/producing-web-service/ 生成SOAP web service 该指南将带领你使用Spring创建一个基于SOAP的 ...
- JAX-RS 方式的 RESTful Web Service 开发
JAX-RS 方式的 RESTful Web Service 开发 ——基于 CXF+Spring 的实现 Web Service 目前在风格上有两大类,一个是基于 SOAP 协议,一个是完全遵循 H ...
- PHP soap Web Service 使用SoapDiscovery.class.php 生成wsdl文件
PHP soap web service 使用wsdl文件 demo: ============================================================== 服 ...
- SOAP web service用AFNetWorking实现请求
问: This is my current call to (asmx) SOAP web service: NSString *soapMessage = [NSString stringWithF ...
- axis1,xfire,jUnit 测试案列+开Web Service开发指南+axis1.jar下载 代码
axis1,xfire,jUnit 测试案列+Web Service开发指南(中).pdf+axis1.jar下载 代码 项目和资源文档+jar 下载:http://download.csdn. ...
- 微软实战训练营(X)重点班第(1)课:SOA必备知识之ASP.NET Web Service开发实战
微软实战训练营 上海交大(A)实验班.(X)重点班 内部课程资料 链接:http://pan.baidu.com/s/1jGsTjq2 password:0wmf <微软实战训练营(X)重点班第 ...
- REST和SOAP Web Service的区别比较
本文转载自他人的博客,ArcGIS Server 推出了 对 SOAP 和 REST两种接口(用接口类型也许并不准确)类型的支持,本文非常清晰的比较了SOAP和Rest的区别联系! ///////// ...
- 二、Web Service开发(.net)
.net平台内建了对Web Service的支持,包括Web Service的构建和使用.与其它开发平台不同,使用.net平台,你不需要其他的工具或者SDK就可以完成Web Service的开发了.. ...
随机推荐
- 软件工程(C编码实践篇)课程总结
课程内容来自网易云课堂中科大孟宁老师的软件工程(C编码实践篇)课程. 课程页面 我觉得本门课程的设置非常科学,每一周课程都是基于上一周课程的进一步抽象,使得学习者能够循序渐进,逐渐加深对软件工程的理解 ...
- Linux中如何解压iso类型文件
在Linux下如何解压iso类型的文件呢? 可以使用mount命令来处理 [root@DB-Server tmp]# ls /tmp/rhel-server-5.7-x86_64-dvd.iso /t ...
- C#语句1:选择语句一(if else )
语句是指程序命令,都是按照顺序执行的.语句在程序中的执行顺序称为“控制流”或“执行流”. 根据程序对运行时所收到的输入的响应,在程序每次运行时控制流可能有所不同. 注意,语句间的标点符号必须是英文标点 ...
- coursera机器学习笔记-神经网络,初识篇
#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...
- 不同Framework下StringBuilder和String的性能对比,及不同Framework性能比(附Demo)
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 环境搭建 测试用例 MSDN说明 ...
- JAVA 基本运算符(摘)
(搞自:Java经典入门教程) http://wenku.baidu.com/link?url=IoWI58cD5vzeHN-NL4pN7Gren-RfzydrhjDlETAByC9L-9ANinyL ...
- hadoop如何处理长时间运行不完成的map/reduce 任务?
如果某一个任务在某个节点上长时间不完成,怎么手动干预来处理这种情况?董西成博客上找到的回答:hadoop中有三种特殊的任务,failed task,killed task和speculative ta ...
- [转]六款值得推荐的android(安卓)开源框架简介
本文转自:http://www.jb51.net/article/51052.htm .volley 项目地址 https://github.com/smanikandan14/Volley-demo ...
- 第8章 用户模式下的线程同步(1)_Interlocked系列函数
8.1 原子访问:Interlocked系列函数(Interlock英文为互锁的意思) (1)原子访问的原理 ①原子访问:指的是一线程在访问某个资源的同时,能够保证没有其他线程会在同一时刻访问该资源. ...
- 深入Java核心 Java内存分配原理精讲
深入Java核心 Java内存分配原理精讲 栈.堆.常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同.本文将深入Java核心,详细讲解Java内存分配方面的知识. Java内存分 ...