Hi,
my web service is up and running and now the other developer starts to use it
in his PHP project. It worked fine on local copies, but it behaves strange on
live server :-( Suddenly I receive all parameters as "" instead of NULL, when
not specified on PHP side.
I started implementation from java interface:
public void registerUser(@WebParam(name = "login") String login,
@WebParam(name = "password") String password,
@WebParam(name = "openId") String openId,
@WebParam(name = "name") String name,
@WebParam(name = "portal") String portal,
@WebParam(name = "portalPassword") String portalPassword)
throws DuplicateKeyException, InvalidInputException,
AccessDeniedException, LdapException;
And here you can see generated WSDL: http://www.abclinuxu.cz/services/users?wsdl
<xs:complexType name="registerUser">
<xs:sequence>
<xs:element minOccurs="0" name="login" type="xs:string"/>
<xs:element minOccurs="0" name="password" type="xs:string"/>
<xs:element minOccurs="0" name="openId" type="xs:string"/>
<xs:element minOccurs="0" name="name" type="xs:string"/>
<xs:element minOccurs="0" name="portal" type="xs:string"/>
<xs:element minOccurs="0" name="portalPassword" type="xs:string"/>
</xs:sequence>
1) How can I influence this WSDL? For example I want to specify minOccurs=1 to
make login and password mandatory, but nillable=true for openid.
2) Do you know, why CXF sends "" instead of NULL? This is in SOAP body
(different method):
<ns1:updateUser><acount><city/><country/><deliveryAddressCity/><deliveryAddressCountry>null</deliveryAddressCountry><deliveryAddressName/><deliveryAddressStreet/><deliveryAddressZIP/><emailAddress>[EMAIL
PROTECTED]</emailAddress><emailBlocked/><emailVerified/><forgottenPasswordToken/><homepageURL/><invoicingAddressCity>Praha
3</invoicingAddressCity><invoicingAddressCountry>ceska
republika</invoicingAddressCountry><invoicingAddressName/><invoicingAddressStreet>Konevova
</invoicingAddressStreet><invoicingAddressZIP>130
83</invoicingAddressZIP><invoicingCompany/><invoicingCompanyDIC/><invoicingCompanyICO/><lastLoginDate/><login>literakl2</login><name>Leos
Literak</name><openID/><passwordAnswer/><passwordHash/><passwordQuestion/><phone/><registrationDate/><sex/><userPassword/></acount><portal>secret/portal><portalPassword>secret</portalPassword></ns1:updateUser>
The developer tried to modify this SOAP message and sent <openID xsi:nil="true"
/> but CXF though translated it into "" parameter.
I use CXF 2.0.5 in jetty 6.1.11, no spring, deploy the service with:
Endpoint.publish(endpointUrlServices, new UserAccountServiceImpl());
public class AbcCxfServlet extends CXFNonSpringServlet {
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
Bus bus = this.getBus();
BusFactory.setDefaultBus(bus);
}
}
Any help will be appreciated.
Leos