" 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']
答案 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注释移动到公共方法将解决问题。