Di seguito posto codice e log dell'eccezione:
web service:
[code2=java]import java.io.IOException;
import javax.servlet.ServletContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.transport.http.HTTPConstants;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
public class ProductWebServer {
private String path="ProductWebServer/products.xml";
public String doCheck(String sku,int quant){
MessageContext msgContext = MessageContext.getCurrentMessageContext();
ServletContext servletContext = (ServletContext)msgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETCONTEXT);
String absolutePath = servletContext.getRealPath(path);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(absolutePath);
ProductDB pdb=new ProductDB(doc);
if(pdb.productBySku(sku)!=null){
return "true";
}else{
return "false";
}
} catch (SAXException | IOException e) {
return "errore sax o io";
} catch (ParserConfigurationException e) {
return "errore parsing";
}
}
}[/code2]
Client:
[code2=java]import java.util.Scanner;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import org.apache.axis2.util.OptionsParser;
public class ClientRPC {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
try {
doCheck(s.nextLine(),5);
} catch (AxisFault e) {
e.printStackTrace();
}
}
private static boolean doCheck(String sku, int quantity) throws AxisFault {
RPCServiceClient serviceClient = new RPCServiceClient();
Options opt = serviceClient.getOptions();
EndpointReference endpointRef = new
EndpointReference("http://localhost:8080/axis2/services/ProductWebServer");
opt.setTo(endpointRef);
opt.setSoapVersionURI(Constants.URI_SOAP12_ENV);
QName opName = new QName("http://carmine.unisa.it","doCheck");
Object[] opArgs = new Object[]{sku, quantity};
Class[] returnTypes = new Class[]{ Boolean.class };
Object[] returnValues = serviceClient.invokeBlocking(opName, opArgs, returnTypes);
return (Boolean)returnValues[0];
}
}[/code2]
Log dell'eccezione ritornata:
[code2=java]Codice Prodotto da cercare: ST999
log4j:WARN No appenders could be found for logger (org.apache.axis2.context.AbstractContext).
log4j:WARN Please initialize the log4j system properly.
org.apache.axis2.AxisFault: URI cannot be null
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:102)
at it.unisa.carmine.client.ClientRPC.doCheck(ClientRPC.java:48)
at it.unisa.carmine.client.ClientRPC.main(ClientRPC.java:22)[/code2]
grazie anticipato a chi avrà la pazienza di darmi una mano :/