web service java ee 7



我正在创建一个货币转换器网络服务,它的工作方式类似于计算器。我的服务类中有以下代码。

@WebService(serviceName = "CalculadoraWebService")
public class CalculadoraWebService {

/**
* Web service operation
*/
@WebMethod(operationName = "Calculadora")
public BigDecimal operation(@WebParam(name = "Corvesion") BigDecimal bolf) {
double bols;
String op;
op = String.valueOf(bolf);
bols = Double.parseDouble(op) / 1000;
long partent = (long) bols;
double partdec = bols - partent;
if (partent ==0 && partdec < 0.750){
partdec=0.500;
} else if (partent ==0 && partdec >0.750){
partdec=1;}
BigDecimal v1;
BigDecimal v2 = new BigDecimal(partdec);
BigDecimal v3 = new BigDecimal(partent);
v1 = v2.add(v3);
v1 = v1.setScale(3, RoundingMode.HALF_UP);
DecimalFormatSymbols simbolo=new DecimalFormatSymbols();
simbolo.setDecimalSeparator(',');
simbolo.setGroupingSeparator('.');
DecimalFormat formato = new DecimalFormat("###,###.##",simbolo);
BigDecimal resul = new BigDecimal(formato.format(v1));
return resul;
}
}

当我调用上面的网络服务时,我在日志中出现以下错误。此错误的可能原因是什么?

WS00041: Service invocation threw an exception with message : null; Refer to the server log for more details
Exceptions details : java.lang.reflect.InvocationTargetException
javax.servlet.ServletException: java.lang.reflect.InvocationTargetException at org.glassfish.webservices.monitoring.WebServiceTesterServlet.doPost(WebServiceTesterServlet.java:342) at org.glassfish.webservices.monitoring.WebServiceTesterServlet.invoke(WebServiceTesterServlet.java:106) at org.glassfish.webservices.JAXWSServlet.doPost(JAXWSServlet.java:157) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) at ..... 

您很可能会收到数字格式异常, 您需要在 simbolo 定义中切换","和"."。

顺便说一句,为什么你需要十进制格式,因为你要返回一个 BigDecimal ? 为什么不直接返回 v1。

最新更新