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的开发了.. ...
随机推荐
- 布局display
什么是布局: 浏览器以正确的大小将元素摆放在正确的位置上. 布局:元素摆放的模式. 影响元素大小和位置的css属性: display position float flex display 设 ...
- HTML5 respond.js 解决IE6~8的响应式布局问题
HTML5 respond.js 解决IE6~8的响应式布局问题 响 应式布局,理想状态是,对PC/移动各种终端进行响应.媒体查询的支持程度是IE9+以及其他现代的浏览器,但是IE8在市场当中仍然 ...
- LAMP配置虚拟目录
1. httpd.conf中添加 Listen 81 2. 1 <VirtualHost 127.0.0.2:81> 2 DocumentRoot E:\ws\2011\DiscuzSp ...
- 入CTF坑必不可少的地方-保持更新
0x00 前言 没有交易,没有买卖,没有排名,纯属分享:p 0x01 CTF介绍 CTF领域指南CTF介绍大全CTF赛事预告 0x02 CTF练习 BIN:reversingpwnableexploi ...
- 微信企业号开发之-如何获取secret 序列号
最近有项目基于微信企业号开发,简单记录下如何查看企业号secert 工具/原料 微信企业号 方法/步骤 用管理员的帐号登录后,选择[设置]-[权限管理]进入管理组设置界面 在左边点击[ ...
- Java虚拟机内存管理原理基础入门
Jdk:Java程序设计语言.Java虚拟机.Java API类库. Jdk是用于支持Java程序开发的最小环境. Jre:Java API类库中的Java SE API子集.Java虚拟机. Jre ...
- mysql Lock wait timeout exceeded; try restarting transaction
查看innodb的事务表INNODB_TRX,看下里面是否有正在锁定的事务线程,看看ID是否在show full processlist里面的sleep线程中,如果是,就证明这个线程事务一直没有com ...
- mysql优化案例分析
本文总结了一些工作常见的sql优化例子,虽然比较简单,但很实用,希望对大家有所帮助.sql优化一般分为两类,一类是sql本身的优化,如何走到合适的索引,如何减少排序,减少逻辑读:另一类是sql本身没有 ...
- 简单阐述下Ajax以get方式请求的步骤 初学,不对的话,跟我说下,谢谢!
首先, 在GET提交中"=,&"等字符与请求字符串的关键字相混淆.所以: 第一步,先对get提交过来的数据进行编码. 第二步,实例化ajax对象. 第三步,创建对服务器的连 ...
- Vim指令备忘
从网上找来的记忆图,适合于刚上手的童鞋形象记忆. 接下来的是个人在使用过程中容易忘记的命令,特此备份查看. n<space> 会向右移动这一行的n 个字元 n<Enter> 向 ...