Apache Axis を使用して WebService を実装しています。このサービスは、次のメンバーを含むParameterBeanクラスをパラメーターとして受け取ります。
public class ParameterBean {
protected String userName = "";
protected String password = "";
protected int clientID = 0;
protected int orgID = 0;
protected HashMap<String, String> mainTable = new HashMap<String, String>();
}
さらに、従来のゲッターとセッター。私は特別なコンストラクタを実装しました:
public ParameterBean(String userName, String password, int clientID, int orgID) {
this.userName = userName;
this.password = password;
this.clientID = clientID;
this.orgID = orgID;
}
さらに、このクラスには次のような基本的なメソッドがいくつかあります。
public void addColumnToMainTable(String columnName, String columnValue) {
addColumnOnTable(mainTable, columnName, columnValue);
}
ただし、java2wsdl と wsdl2java を実行すると、生成されたParameterBeanソース コードは大きく異なります。メソッドaddColumnToMainTable()はなくなり、生成されるコンストラクターは次のようになります (元のコンストラクターとは異なります)。
public ParameterBean(
int clientID,
java.util.HashMap mainTable,
int orgID,
java.lang.String password,
java.lang.String userName) {
this.clientID = clientID;
this.mainTable = mainTable;
this.orgID = orgID;
this.password = password;
this.userName = userName;
}
私のbuild.xml:
<target name="generateWSDL" description="Generates wsdl files from the java service interfaces">
<mkdir dir="${wsdl.dir}"/>
<axis-java2wsdl classpathref="classpath"
output="${wsdl.dir}/ExampleWS.wsdl"
location="http://localhost:8080/axis/services/ExampleWS"
namespace="org.example.ws"
classname="org.example.ws.ExampleWS">
</axis-java2wsdl>
</target>
<target name="generateWSDD" description="Generates wsdd files from the wsdl files">
<mkdir dir="${wsdd.dir}"/>
<axis-wsdl2java
output="${wsdd.dir}"
deployscope="Application"
serverside="true"
url="${wsdl.dir}\ExampleWS.wsdl">
</axis-wsdl2java>
</target>
生成されたコードの違いはなぜですか? どうすれば修正できますか?Axis 1.4 を使用しています。ありがとう。
編集:私にとってより重要なのは、どのクラスを使用する必要があるか (サーバー側とクライアント側)? 私のものですか、それとも生成されたものですか?