XFire WSDLパラメータ名の変更方法

2944 ワード

WebServicesインタフェースの記述ファイルWSDLでは、name=「in 0」のようなパラメータ構成がよく見られます.以下のようになります.

<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="xsd:string" />
<xsd:element maxOccurs="1" minOccurs="1" name="in1" nillable="true" type="xsd:string" />
<xsd:element maxOccurs="1" minOccurs="1" name="in2" nillable="true" type="xsd:string" />

これはクライアントにとって不便で、可読性が悪く、インタフェースドキュメントに向かってしか各パラメータの名前が分からない.では、これらの友好的でない名前を友好的なパラメータ名に変更するにはどうすればいいのでしょうか.たとえば、name=「callTime」です.実装手順は次のとおりです.
第一歩、JSR 181注記構成(annotation方式とも呼ばれる)は、webserviceインタフェースクラスを注記する.

package com.metarnet.webservice;

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

@WebService
public interface IAlarmSwitchService {
	
	@WebMethod
	@WebResult(name="resultMsg")
	public String transferAlarm(@WebParam(name="serSupplier")String serSupplier,
								@WebParam(name="serCaller")String serCaller,
								@WebParam(name="callerPwd")String callerPwd,
								@WebParam(name="callTime")String callTime,
								@WebParam(name="opDetail")String opDetail);
	
}

ステップ2xmlファイル構成
   

<?xml version="1.0" encoding="UTF-8"?>
<beans>
	<service xmlns="http://xfire.codehaus.org/config/1.0">
		<name>AlarmSwitchService</name>
		<serviceClass>
			com.metarnet.webservice.IAlarmSwitchService
		</serviceClass>
		<implementationClass>
			com.metarnet.webservice.AlarmSwitchServiceImpl
		</implementationClass>
		<serviceFactory>jsr181</serviceFactory><!--      ,      in0...-->
	</service>
</beans>

ステップ3、これで、構成ステップが完了し、効果が表示されます.
   

<xsd:complexType>
 <xsd:sequence>
  <xsd:element maxOccurs="1" minOccurs="1" name="serSupplier"  type="xsd:string"/>
  <xsd:element maxOccurs="1" minOccurs="1" name="serCaller"  type="xsd:string"/>
  <xsd:element maxOccurs="1" minOccurs="1" name="callerPwd" type="xsd:string"/>
  <xsd:element maxOccurs="1" minOccurs="1" name="callTime" type="xsd:string"/>
  <xsd:element maxOccurs="1" minOccurs="1" name="opDetail" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>