计算器restful error deploy

时间:2018-04-28 03:39:04

标签: java rest web-services restful-url

" uts.dae.model.rest.Calculadora"的来源班级

 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,则会发生以下错误:

[[警告]一个子资源模型,双uts.dae.model.rest.Calculadora。$ Suma(double,double),必须是公共范围的,否则方法被忽略; source =' class uts.dae.model.rest.Calculadora',[WARNING]一个子资源模型,双uts.dae.model.rest.Calculadora。$ Multiplicacion(double,double),必须是public scoped否则方法被忽略; source =' class uts.dae.model.rest.Calculadora',[WARNING]一个子资源模型,双uts.dae.model.rest.Calculadora。$ Resta(double,double),必须是public scoped否则方法被忽略; source =' class uts.dae.model.rest.Calculadora',[WARNING]一个子资源模型,双uts.dae.model.rest.Calculadora。$ Modulo(double,double),必须是public scoped否则方法被忽略; source =' class uts.dae.model.rest.Calculadora',[WARNING]一个子资源模型,双uts.dae.model.rest.Calculadora。$ Division(double,double),必须是public scoped否则方法被忽略; source =' class uts.dae.model.rest.Calculadora',[FATAL]资源模型具有HTTP方法GET的模糊(子)资源方法和输入mime-types,由" @定义消耗"和" @ Produces" Java方法中的注释public java.lang.String uts.dae.model.rest.Calculadora.Suma(double,double)和public java.lang.String uts.dae.model.rest.Calculadora.Resta(double,double)at匹配正则表达式/ calculadora。这两个方法生成并使用完全相同的mime类型,因此它们作为资源方法的调用将始终失败。 source =' org.glassfish.jersey.server.model.RuntimeResource@1f7972f',[FATAL]资源模型具有HTTP方法GET的模糊(子)资源方法和由&#定义的输入mime类型34; @消耗"和" @ Produces" Java方法中的注释public java.lang.String uts.dae.model.rest.Calculadora.Suma(double,double)和public java.lang.String uts.dae.model.rest.Calculadora.Multiplicacion(double,double)at匹配正则表达式/ calculadora。这两个方法生成并使用完全相同的mime类型,因此它们作为资源方法的调用将始终失败。 source =' org.glassfish.jersey.server.model.RuntimeResource@1f7972f',[FATAL]资源模型具有HTTP方法GET的模糊(子)资源方法和由&#定义的输入mime类型34; @消耗"和" @ Produces" Java方法中的注释public java.lang.String uts.dae.model.rest.Calculadora.Suma(double,double)和public java.lang.String uts.dae.model.rest.Calculadora.Division(double,double)at匹配正则表达式/ calculadora。这两个方法生成并使用完全相同的mime类型,因此它们作为资源方法的调用将始终失败。 source =' org.glassfish.jersey.server.model.RuntimeResource@1f7972f',[FATAL]资源模型具有HTTP方法GET的模糊(子)资源方法和由&#定义的输入mime类型34; @消耗"和" @ Produces" Java方法中的注释public java.lang.String uts.dae.model.rest.Calculadora.Suma(double,double)和public java.lang.String uts.dae.model.rest.Calculadora.Modulo(double,double)at匹配正则表达式/ calculadora。这两个方法生成并使用完全相同的mime类型,因此它们作为资源方法的调用将始终失败。 source =' org.glassfish.jersey.server.model.RuntimeResource@1f7972f',[FATAL]资源模型具有HTTP方法GET的模糊(子)资源方法和由&#定义的输入mime类型34; @消耗"和" @ Produces" Java方法中的注释public java.lang.String uts.dae.model.rest.Calculadora.Resta(double,double)和public java.lang.String uts.dae.model.rest.Calculadora.Multiplicacion(double,double)at匹配正则表达式/ calculadora。这两个方法生成并使用完全相同的mime类型,因此它们作为资源方法的调用将始终失败。 source =' org.glassfish.jersey.server.model.RuntimeResource@1f7972f',[FATAL]资源模型具有HTTP方法GET的模糊(子)资源方法和由&#定义的输入mime类型34; @消耗"和" @ Produces" Java方法中的注释public java.lang.String uts.dae.model.rest.Calculadora.Resta(double,double)和public java.lang.String uts.dae.model.rest.Calculadora.Division(double,double)at匹配正则表达式/ calculadora。这两个方法生成并使用完全相同的mime类型,因此它们作为资源方法的调用将始终失败。 source =' org.glassfish.jersey.server.model.RuntimeResource@1f7972f',[FATAL]资源模型具有HTTP方法GET的模糊(子)资源方法和由&#定义的输入mime类型34; @消耗"和" @ Produces" Java方法中的注释public java.lang.String uts.dae.model.rest.Calculadora.Resta(double,double)和public java.lang.String uts.dae.model.rest.Calculadora.Modulo(double,double)at匹配正则表达式/ calculadora。这两个方法生成并使用完全相同的mime类型,因此它们作为资源方法的调用将始终失败。 source =' org.glassfish.jersey.server.model.RuntimeResource@1f7972f',[FATAL]资源模型具有HTTP方法GET的模糊(子)资源方法和由&#定义的输入mime类型34; @消耗"和" @ Produces" Java方法中的注释public java.lang.String uts.dae.model.rest.Calculadora.Multiplicacion(double,double)和public java.lang.String uts.dae.model.rest.Calculadora.Division(double,double)at匹配正则表达式/ calculadora。这两个方法生成并使用完全相同的mime类型,因此它们作为资源方法的调用将始终失败。 source =' org.glassfish.jersey.server.model.RuntimeResource@1f7972f',[FATAL]资源模型具有HTTP方法GET的模糊(子)资源方法和由&#定义的输入mime类型34; @消耗"和" @ Produces" Java方法中的注释public java.lang.String uts.dae.model.rest.Calculadora.Multiplicacion(double,double)和public java.lang.String uts.dae.model.rest.Calculadora.Modulo(double,double)at匹配正则表达式/ calculadora。这两个方法生成并使用完全相同的mime类型,因此它们作为资源方法的调用将始终失败。 source =' org.glassfish.jersey.server.model.RuntimeResource@1f7972f',[FATAL]资源模型具有HTTP方法GET的模糊(子)资源方法和由&#定义的输入mime类型34; @消耗"和" @ Produces" Java方法的注释public java.lang.String uts.dae.model.rest.Calculadora.Division(double,double)和public java.lang.String uts.dae.model.rest.Calculadora.Modulo(double,double)at匹配正则表达式/ calculadora。这两个方法生成并使用完全相同的mime类型,因此它们作为资源方法的调用将始终失败。源=' org.glassfish.jersey.server.model.RuntimeResource@1f7972f']

1 个答案:

答案 0 :(得分:0)

将所有@Path注释从具有'$'作为前缀的方法移动到这些公共方法,如下所示:

@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;
}

另请查看this SO帖子。

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