Tuscany发布Web Service示例

本文通过一个Hello World的例子,详细介绍了如何使用Tuscany发布Web Service。首先,通过Maven创建了一个Web项目,并展示了项目的结构。接着,列出了Maven依赖和web.xml配置文件的内容。在客户端测试阶段,提到了可能出现的异常以及解决方法,即添加httpcore-4.0.jar来解决ClassNotFoundException问题。

这里举个Hello world的例子演示使用Tuscany发布Web Service。首先maven创建web项目,结构如下


maven引用如下


web.xml如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >

  <display-name>myws</display-name>

  <filter>
    <filter-name>tuscany.myws</filter-name> 
    <filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class> 
  </filter>

  <filter-mapping>
    <filter-name>tuscany.myws</filter-name> 
    <url-pattern>/*</url-pattern> 
  </filter-mapping>

  <welcome-file-list id="WelcomeFileList">
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>
HelloService接口如下

package myws;

import org.oasisopen.sca.annotation.Remotable;

@Remotable
public interface HelloService {
	
	String sayHello(String name);

}

实现类如下

package myws;

public class HelloServiceImpl implements HelloService{
	
	@Override
    public String sayHello(String name) {
        return "Hello " + name;
    }

}
web.composite配置文件如下

<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
           targetNamespace="http://myws"
           name="myws">

    <component name="HelloComponent">
        <implementation.java class="myws.HelloServiceImpl"/>
        <service name="HelloService">  
           <binding.ws uri="http://localhost:8080/HelloComponent/HelloService"/>
        </service>
    </component>

</composite>
将项目部署于tomcat运行,用浏览器测试如下

java客户端测试如下。测试时可能会抛出异常:java.lang.ClassNotFoundException: org.apache.http.HttpResponseFactory,是因为少JAR包。如果用过Axis2,可以去它里面找httpcore-4.0.jar,引入项目即可。

package test;

import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class HelloClient {

	public static void main(String[] args) throws AxisFault {
        RPCServiceClient serviceClient = new RPCServiceClient();
        Options options = serviceClient.getOptions();
        //设定服务提供者的地址
        EndpointReference targetEPR = new EndpointReference("http://localhost:8080/myws/HelloComponent/HelloService");
        options.setTo(targetEPR);
        //设定所要调用的服务的操作
        QName qName = new QName("http:///myws", "sayHello");
        Class[] returnTypes = new Class[] { String.class };
        //设定调用的方法的参数值
        Object[] params = new Object[] { "World" };
        //得到调用的结果
        Object[] response = serviceClient.invokeBlocking(qName,params,returnTypes);
        String result = (String) response[0];;
        //如果调用失败
        if (result == null) {
            System.out.println("服务调用失败!");
            return;
        } 
        //显示调用的结果
        System.out.println(result);   
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值