[英]Top-down Web Service Generation using AXIS1 is taking my complexType apart
當我生成一個存根(使用 Eclipse Oxygen,自上而下,Axis1)時,函數生成如下:
public TokenNamespace.ideas.mace.TokenResponse getToken(TokenNamespace.ideas.mace.TokenRequest tokenRequest) throws java.rmi.RemoteException {
return null;
}
public TokenNamespace.ideas.mace.TokenResponse getToken2(TokenNamespace.ideas.mace.TokenRequest tokenRequest, boolean stopOnAnyError, TokenNamespace.ideas.mace.EACommand[] command, TokenNamespace.ideas.mace.HttpHeader[] httpHeader) throws java.rmi.RemoteException {
return null;
}
為什么 TokenRequest 類保持完整,而 BatchCommand 和 HttpHeaders 被拆除?
我嘗試在 HttpHeaders 和 BatchCommand 下添加更多子元素,但它們只是被拆分為附加參數。 我看不出他們的聲明和 getToken 之間有什么區別。
如果你正在談論getToken2()
方法然后實際上它們不是如果看到拆除而httpheaders
實際上是陣列httpheader
所以在Java代碼它被轉換為httpheaders數組作為參數來getToken2
和同樣適用於該情況下CommandBatch
.
和
如果您正在談論為什么將它們從 getToken() 方法中拆除,那么解決方案如下所示。
這是因為在 wsdl 文件中你沒有定義 getToken() 方法的參數
例如你有這個
<portType name="TokenService">
<operation name="getToken" parameterOrder="getToken">
<input message="tns:TokenService_getToken" />
<output message="tns:TokenService_getTokenResponse" />
</operation>
<operation name="getToken2" parameterOrder="getToken batchCommand httpHeaders">
<input message="tns:TokenService_getToken2" />
<output message="tns:TokenService_getTokenResponse" />
</operation>
</portType>
你應該像下面這樣更新它
<portType name="TokenService">
<operation name="getToken" parameterOrder="getToken batchCommand httpHeaders">
<input message="tns:TokenService_getToken" />
<output message="tns:TokenService_getTokenResponse" />
</operation>
<operation name="getToken2" parameterOrder="getToken batchCommand httpHeaders">
<input message="tns:TokenService_getToken2" />
<output message="tns:TokenService_getTokenResponse" />
</operation>
</portType>
也就是說您的操作 getToken 應該在 parameterOrder 屬性中定義所需的參數。
並且還將消息從
<message name="TokenService_getToken">
<part element="tns:httpHeaders" name="httpHeaders" />
</message>
到
<message name="TokenService_getToken">
<part element="tns:getToken" name="getToken" />
<part element="tns:batchCommand" name="batchCommand" />
<part element="tns:httpHeaders" name="httpHeaders" />
</message>
之后它會正確生成代碼。
您可以進一步查看此答案它解釋了如何使用 maxOccurs 屬性。 如果未指定,則元素將僅出現一次。 所以這就是為什么 getToken 沒有像其他參數一樣被更改為數組,而是被替換為 TokenRequest 的一次出現,它確實包含在 getToken complexType 中。 那是 TokenRequest 的一次出現
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.