计算器 restful 错误部署

calculator restful error deploy

"uts.dae.model.rest.Calculadora"的来源class

 package uts.dae.model.rest;

 import javax.ejb.Stateless;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.QueryParam;

  /**
  *
  * @author x2010s
  */

  @Stateless

  @Path("/calculadora")


  public class Calculadora {


  @GET 
  public String Suma(@QueryParam("num1") double num1,@QueryParam("num2") double num2)    {
  return Double.toString($Suma(num1,num2));
 }
  @Path("calculadora/suma")
    double $Suma(double num1,double num2) {
    double resultado;
    resultado = num1 + num2;
    return resultado; 
 }

@GET 
public String Resta(@QueryParam("num1") double num1,@QueryParam("num2") double num2)    {
return Double.toString($Resta(num1,num2));
 }
 @Path("calculadora/resta")
    double $Resta(@QueryParam("num1") double num1,@QueryParam("num2") double num2) {
    double resultado;
    resultado = num1 - num2;
    return resultado;

 }

 @GET    
 public String Multiplicacion(@QueryParam("num1") double num1,@QueryParam("num2") double num2)    {
 return Double.toString($Multiplicacion(num1,num2));
  } 
 @Path("calculadora/multiplicacion")
   double $Multiplicacion(double num1,double num2) {
    double resultado;
    resultado = num1 * num2;
    return resultado;

}  



 @GET 
 public String Division(@QueryParam("num1") double num1,@QueryParam("num2") double num2)    {
 return Double.toString($Division(num1,num2));
 }
 @Path("calculadora/Division")
  double $Division(double num1,double num2) {
    double resultado;
    resultado = num1 / num2;
    return resultado;

}


@GET 
public String Modulo(@QueryParam("num1") double num1,@QueryParam("num2") double num2)    {
 return Double.toString($Modulo(num1,num2));
 }
@Path("calculadora/Modulo")
double $Modulo(@QueryParam("num1") double num1,@QueryParam("num2") double num2) {
    double resultado;
    resultado = num1 % num2;
    return resultado;

}
}

当我部署时,如果它们有不同的 url:

,就会出现以下错误

[[警告] 子资源模型,double uts.dae.model.rest.Calculadora.$Suma(double,double),必须是 public 范围,否则该方法将被忽略; source='class uts.dae.model.rest.Calculadora', [WARNING] 子资源模型,double uts.dae.model.rest.Calculadora.$Multiplicacion(double,double),必须是 public 范围,否则该方法将被忽略; source='class uts.dae.model.rest.Calculadora', [WARNING] 子资源模型,double uts.dae.model.rest.Calculadora.$Resta(double,double),必须是 public 范围,否则该方法将被忽略; source='class uts.dae.model.rest.Calculadora', [WARNING] 子资源模型,double uts.dae.model.rest.Calculadora.$Modulo(double,double),必须是 public 范围,否则该方法将被忽略; source='class uts.dae.model.rest.Calculadora', [WARNING] 子资源模型,double uts.dae.model.rest.Calculadora.$Division(double,double),必须是 public 范围,否则该方法将被忽略; source='class uts.dae.model.rest.Calculadora', [FATAL] 资源模型对于 HTTP 方法 GET 和输入 mime 类型具有不明确的(子)资源方法,如 Java 处的“@Consumes”和“@Produces”注释所定义方法 public java.lang.String uts.dae.model.rest.Calculadora.Suma(double,double) 和 public java.lang.String uts.dae.model.rest.Calculadora.Resta(double,double) 在匹配正则表达式/计算。这两个方法产生和使用完全相同的 mime 类型,因此它们作为资源方法的调用总是会失败。 source='org.glassfish.jersey.server.model.RuntimeResource@1f7972f', [FATAL] 资源模型对于 HTTP 方法 GET 和输入 mime 类型具有不明确的(子)资源方法,如 Java 处的“@Consumes”和“@Produces”注释所定义方法 public java.lang.String uts.dae.model.rest.Calculadora.Suma(double,double) 和 public java.lang.String uts.dae.model.rest.Calculadora.Multiplicacion(double,double) 在匹配正则表达式/计算。这两个方法产生和使用完全相同的 mime 类型,因此它们作为资源方法的调用总是会失败。 source='org.glassfish.jersey.server.model.RuntimeResource@1f7972f', [FATAL] 资源模型对于 HTTP 方法 GET 和输入 mime 类型具有不明确的(子)资源方法,如 Java 处的“@Consumes”和“@Produces”注释所定义public java.lang.String uts.dae.model.rest.Calculadora.Suma(double,double) 和 public java.lang.String uts.dae.model.rest.Calculadora.Division(double,double) 匹配正则表达式的方法/计算。这两个方法产生和使用完全相同的 mime 类型,因此它们作为资源方法的调用总是会失败。 source='org.glassfish.jersey.server.model.RuntimeResource@1f7972f', [FATAL] 资源模型对于 HTTP 方法 GET 和输入 mime 类型具有不明确的(子)资源方法,如 Java 处的“@Consumes”和“@Produces”注释所定义方法 public java.lang.String uts.dae.model.rest.Calculadora.Suma(double,double) 和 public java.lang.String uts.dae.model.rest.Calculadora.Modulo(double,double) 在匹配正则表达式/计算。这两个方法产生和使用完全相同的 mime 类型,因此它们作为资源方法的调用总是会失败。 source='org.glassfish.jersey.server.model.RuntimeResource@1f7972f', [FATAL] 资源模型对于 HTTP 方法 GET 和输入 mime 类型具有不明确的(子)资源方法,如 Java 处的“@Consumes”和“@Produces”注释所定义方法 public java.lang.String uts.dae.model.rest.Calculadora.Resta(double,double) 和 public java.lang.String uts.dae.model.rest.Calculadora.Multiplicacion(double,double) 在匹配正则表达式/计算。这两个方法产生和使用完全相同的 mime 类型,因此它们作为资源方法的调用总是会失败。 source='org.glassfish.jersey.server.model.RuntimeResource@1f7972f', [FATAL] 资源模型对于 HTTP 方法 GET 和输入 mime 类型具有不明确的(子)资源方法,如 Java 处的“@Consumes”和“@Produces”注释所定义方法 public java.lang.String uts.dae.model.rest.Calculadora.Resta(double,double) 和 public java.lang.String uts.dae.model.rest.Calculadora.Division(double,double) 在匹配正则表达式/计算。这两个方法产生和使用完全相同的 mime 类型,因此它们作为资源方法的调用总是会失败。 source='org.glassfish.jersey.server.model.RuntimeResource@1f7972f', [FATAL] 资源模型对于 HTTP 方法 GET 和输入 mime 类型具有不明确的(子)资源方法,如 Java 处的“@Consumes”和“@Produces”注释所定义方法 public java.lang.String uts.dae.model.rest.Calculadora.Resta(double,double) 和 public java.lang.String uts.dae.model.rest.Calculadora.Modulo(double,double) 在匹配正则表达式/计算。这两个方法产生和使用完全相同的 mime 类型,因此它们作为资源方法的调用总是会失败。 source='org.glassfish.jersey.server.model.RuntimeResource@1f7972f', [FATAL] 资源模型对于 HTTP 方法 GET 和输入 mime 类型具有不明确的(子)资源方法,如 Java 处的“@Consumes”和“@Produces”注释所定义方法 public java.lang.String uts.dae.model.rest.Calculadora.Multiplicacion(double,double) 和 public java.lang.String uts.dae.model.rest.Calculadora.Division(double,double) 在匹配正则表达式/计算。这两个方法产生和使用完全相同的 mime 类型,因此它们作为资源方法的调用总是会失败。 source='org.glassfish.jersey.server.model.RuntimeResource@1f7972f', [FATAL] 资源模型对于 HTTP 方法 GET 和输入 mime 类型具有不明确的(子)资源方法,如 Java 处的“@Consumes”和“@Produces”注释所定义方法 public java.lang.String uts.dae.model.rest.Calculadora.Multiplicacion(double,double) 和 public java.lang.String uts.dae.model.rest.Calculadora.Modulo(double,double) 在匹配正则表达式/计算。这两个方法产生和使用完全相同的 mime 类型,因此它们作为资源方法的调用总是会失败。 source='org.glassfish.jersey.server.model.RuntimeResource@1f7972f', [FATAL] 资源模型对于 HTTP 方法 GET 和输入 mime 类型具有不明确的(子)资源方法,如 Java 处的“@Consumes”和“@Produces”注释所定义方法 public java.lang.String uts.dae.model.rest.Calculadora.Division(double,double) 和 public java.lang.String uts.dae.model.rest.Calculadora.Modulo(double,double) 在匹配正则表达式/计算。这两个方法产生和使用完全相同的 mime 类型,因此它们作为资源方法的调用总是会失败。来源='org.glassfish.jersey.server.model.RuntimeResource@1f7972f']

将所有 @Path 注释从以“$”作为前缀的方法移动到那些 public 方法,如下所示:

@GET
@Path("calculadora/Modulo")
public String Modulo(@QueryParam("num1") double num1,@QueryParam("num2") double num2)    {
    return Double.toString($Modulo(num1,num2));
}

double $Modulo(@QueryParam("num1") double num1,@QueryParam("num2") double num2) {
    double resultado;
    resultado = num1 % num2;
    return resultado;
}

也看看 所以 post.

问题在于,由于所有 public 方法都是用 @GET 注释的资源方法,它们没有 @Path 注释并且它们的参数列表是相同的,如果您发送http 获取 对“/calculadora”的请求 url 应该调用哪个方法存在歧义,因此将 @Path 注释移动到 public 方法将解决问题。