JAX-WS(四)webservice転送オブジェクト

2964 ワード

Webserviceを使用してオブジェクトを渡す
インタフェース

package com.hqh.service;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

@WebService
public interface IMyService {
	@WebResult(name="plusResult")
	public int plus(@WebParam(name="a")int a,@WebParam(name="b")int b);
	
	@WebResult(name="minusResult")
	public int minus(@WebParam(name="a")int a,@WebParam(name="b")int b);
	
	//    User  
	@WebResult(name="User")
	public User getUser(@WebParam(name="username")String uname,@WebParam(name="age")int age);
}

実装クラス

package com.hqh.service;

import javax.jws.WebService;

@WebService(endpointInterface="com.hqh.service.IMyService")
//endpointInterface      
public class MyServiceImpl implements IMyService {

	@Override
	public int plus(int a, int b) {
		System.out.println("MyServiceImpl.plus()");
		return a+b;
	}

	@Override
	public int minus(int a, int b) {
		System.out.println("MyServiceImpl.minus()");
		return a-b;
	}

	@Override
	public User getUser(String uname, int age) {
		User user = new User(uname,age);
		user.setId(100);
		return user;
	}

	
}

wsdlでのオブジェクト転送

<?xml version="1.0"?>
<xs:schema version="1.0" targetNamespace="http://service.hqh.com/">
  <xs:element name="getUser" type="tns:getUser"/>
  <xs:element name="getUserResponse" type="tns:getUserResponse"/>
  <!--    -->
  <xs:complexType name="getUser">
    <xs:sequence>
      <xs:element name="username" type="xs:string" minOccurs="0"/>
      <xs:element name="age" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>
  <!--     -->
  <xs:complexType name="getUserResponse">
    <xs:sequence>
	  <!--      -->
      <xs:element name="User" type="tns:user" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <!--         :User    -->
  <xs:complexType name="user">
    <xs:sequence>
      <xs:element name="age" type="xs:int"/>
      <xs:element name="id" type="xs:int"/>
      <xs:element name="uname" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>