WSDL2Ws Axis_DeSerialize_<type> functions generate the following code for type xsd_string:
xsdstring* p_XXX \= (pIWSDZ->getElementAsString("XXX",0)); param->XXX \= *p_XXX; delete p_XXX;
You need to manually change this to (remove two * and comment out the delete):
xsdstring p_XXX \= (pIWSDZ->getElementAsString("XXX",0)); param->XXX \= p_XXX; // delete p_XXX;
For type xsd_int, it generates:
xsdint* p_XXX = (pIWSDZ->getElementAsInt("XXX",1)); param->XXX = *p_XXX; delete p_XXX;
You need to manually change this to (remove one * on second expression and comment out last line):
xsdint* p_BEN_NAI_DRI = (pIWSDZ->getElementAsInt("BEN_NAI_DRI",1)); param->BEN_NAI_DRI = p_BEN_NAI_DRI; // delete p_BEN_NAI_DRI;
There are probably better fixes, I went quickly through the code and found the bug to be line 661 in writeDeSerializeGlobalMethod at src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java
After looking through I found a bug open for this issue: https://issues.apache.org/jira/browse/AXISCPP-966 I have updated the issue with hints at required code changes.
Another workarround is to not use nillable="true" until this is fixed.