# JAX-WS Parameter Required?



## ZeroQool (7. Jun 2010)

Hallo, habe einen JAX-WS und möchte das der Inputparameter "pToken" vom Typ "Token" Required ist, aber keine Ahnung wie.

Folgender Code:


```
@WebService(name = "UserManagerService", targetNamespace = "http://service.demo.de")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.WRAPPED, use = SOAPBinding.Use.LITERAL)
public interface UserManagerService
{
@WebMethod(operationName = "Confirm")
	public Boolean ConfirmOptIn(@WebParam(name = "WebServiceAuthentication", header = true) AuthData pAuthData, @WebParam(name = "TokenID") Token pToken) throws Exception;

}
```


```
@XmlType
@XmlAccessorType(XmlAccessType.FIELD)
public class Token
{
	/**
	 * Property
	 */
	@XmlElement(required = true)
	protected String pToken;

	/**
	 * Constructor
	 */

	/**
	 * Getter/Setter
	 */
	public String getPToken()
	{
		return pToken;
	}

	public void setPToken(String token)
	{
		pToken = token;
	}

}
```

Das ganze sieht unter SOAP UI so aus:
[XML]
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.demo.de">
   <soapenv:Header>
      <ser:WebServiceAuthentication>
         <password>?</password>
         <username>?</username>
      </ser:WebServiceAuthentication>
   </soapenv:Header>
   <soapenv:Body>
      <ser:ConfirmOptIn>
         <!--Optional:-->
         <Token>
            <PToken>?</PToken>
         </Token>
      </ser:ConfirmOptIn>
   </soapenv:Body>
</soapenv:Envelope>[/XML]

Rein logisch kann ich mir erklären warum über <Token> 





> <!--Optional:-->


 steht, aber ich weiss nicht wie ich das umgehen soll. Wenn ich in der Klasse "Token" testweise 
	
	
	
	





```
required = false
```
 schreibe sieht das so aus: 
[XML]
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.demo.de">
   <soapenv:Header>
      <ser:WebServiceAuthentication>
         <password>?</password>
         <username>?</username>
      </ser:WebServiceAuthentication>
   </soapenv:Header>
   <soapenv:Body>
      <ser:ConfirmOptIn>
         <!--Optional:-->
         <Token>
            <!--Optional:-->
            <PToken>?</PToken>
         </Token>
      </ser:ConfirmOptIn>
   </soapenv:Body>
</soapenv:Envelope>[/XML]

danke


----------



## gman (7. Jun 2010)

Hi,

in der "ConfirmOptIn"-Methode ist der Parameter ja vorhanden, wenn du jetzt mit "wsimport"
einen Client erzeugts wird auch da der Parameter in der Methode vorhanden sein. Das jemand
als Parameter einfach "null" übergibt wirst du wohl kaum verhindern können bzw. musst du im
Webservice abfangen. Insofern verstehe ich nicht so ganz was du jetzt noch "required" machen
willst.


----------



## ZeroQool (7. Jun 2010)

gman hat gesagt.:


> Hi,
> 
> in der "ConfirmOptIn"-Methode ist der Parameter ja vorhanden, wenn du jetzt mit "wsimport"
> einen Client erzeugts wird auch da der Parameter in der Methode vorhanden sein. Das jemand
> ...



Den Webservce sollen später mal andere Dienstleister konsumieren und deshalb möchte ich gerne, dass der Entwickler direkt beim durchschauen der WSDL (minoccur=1) sieht, das ist ein Pflichtfeld.


----------

