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的开发了.. ...
随机推荐
- 全面理解JavaScript中的闭包的含义及用法
1.什么是闭包 闭包:闭包就是能够读取其他函数内部变量的函数;闭包简单理解成“定义在一个函数内部的函数”. 闭包的形式:即内部函数能够使用它所在级别的外部函数的参数,属性或者内部函数等,并且能在包含它 ...
- yii2发送邮件教程
作者:白狼 出处:http://www.manks.top/article/yii2_swiftMailer本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...
- Hadoop自定义分组Group
matadata: hadoop a spark a hive a hbase a tachyon a storm a redis a 自定义分组 import org.apache.hadoop.c ...
- [20130704] Intra-Query Parallel Thread Deadlocks
今天碰到了 Intra-Query Parallel Thread Deadlocks 简单的说就是并发查询把自己给锁住了. 原理: 在并发查询运行是,有一个生产者和一个消费者,生产者等待消费者产生 ...
- ASP.NET MVC 拓展ViewResult实现word文档下载
最近项目中有同事用到word文档导出功能,遇到了一些导出失败问题,帮其看了下解决问题的同事,看了下之前的代码发现几个问题: 代码编写不规范,word导出功能未收口 重复代码导出都是 实现逻辑比较复 ...
- Storm系列(一):搭建dotNet开发Storm拓扑的环境
上篇博客比较了目前流行的计算框架特性,如果你是 Java 开发者,那么根据业务场景选择即可:但是如果你是 .Net 开发者,那么三者都不能拿来即用,至少在这篇文章出现之前是如此.基于上篇文章的比较发现 ...
- html5 如何进行自定义属性的定义和查询
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>T ...
- 烂泥:KVM使用NAT联网并为VM配置iptables端口转发
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在前面的文章中,我们介绍KVM的虚拟机(以下简称VM)都是通过桥接方式进行联网的. 本篇文章我们来介绍KVM的VM通过NAT方式进行联网,并且通过配置I ...
- linux中send函数MSG_NOSIGNAL异常消息
最近2周在做ineedle的国舜项目扩展,需要使用socket的tcp连接向对方发送消息,当然需求很简单,只是按照对方要求发送指定格式的消息,程序结构也非常的简单,一对多的client/server模 ...
- 用php生成静态html页面(通用2种方法)
因为每次用户点击动态链接的时候都会对服务器发送数据查询的要求 对于一个访问量可能达百万千万级别的网站来说 这无疑是服务器一个大大的负担 所以把动态数据转换成静态html页面就成了节省人力物力的首选 因 ...