मैं निम्नलिखित है GET
बाकी विधि:OffsetDateTime उपज GET पद्धति में "प्रकार सार्वजनिक javax.ws.rs.core.response की एक पैरामीटर के लिए नहीं मिले इंजेक्शन स्रोत"
import java.time.OffsetDateTime;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import com.product.rest.api.TransactionsApi;
import com.product.rest.model.Transaction;
@Path("/transactions")
@Api(description = "the transactions API")
@Consumes({ "application/json" })
@Produces({ "application/json" })
public class TransactionsApiImpl extends TransactionsApi {
@GET
@Consumes({ "application/json" })
@Produces({ "application/json" })
@ApiOperation(value = "", notes = "Get all transactions", response = Transaction.class, responseContainer = "List", tags = {})
@ApiResponses(
value = { @ApiResponse(code = 200, message = "OK", response = Transaction.class, responseContainer = "List"),
@ApiResponse(code = 400, message = "Bad Request", response = Transaction.class, responseContainer = "List"),
@ApiResponse(code = 404, message = "Not Found", response = Transaction.class, responseContainer = "List"),
@ApiResponse(code = 500, message = "Internal Server Error", response = Transaction.class, responseContainer = "List") })
@Override
public Response transactionsGet(
@HeaderParam("tok") String tok,
@QueryParam("param1") Integer param1,
@QueryParam("param2") String param2,
@QueryParam("param3") OffsetDateTime param3,
@QueryParam("param4") OffsetDateTime param4,
@QueryParam("param5") Integer param5,
@QueryParam("param6") Integer param6,
@QueryParam("param7") String param7) {
return Response.ok().entity("Success!").build();
}
TransactionsApi
एक उत्पन्न कार्यान्वयन है Transaction
मॉडल वर्ग के रूप में, स्वैगर कोडेजन का उपयोग करना। मैं इस वर्ग में कुछ अन्य कार्य है, लेकिन जब भी मैं GET /transactions
समारोह uncommented छोड़ देते हैं, मैं निम्न त्रुटि प्राप्त:
WARN [Thread-1] (ContextHandler.java:2175) - unavailable
org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] No injection source found for a parameter of type public javax.ws.rs.core.Response
com.product.rest.impl.v1.TransactionsApiImpl.transactionsGet(java.lang.String,java.lang.Integer,java.lang.String,java.time.OffsetDateTime,java.time.OffsetDateTime,java.lang.Integer,java.lang.Integer,java.lang.String) at index 3.; source='ResourceMethod{httpMethod=GET, consumedTypes=[application/json], producedTypes=[application/json], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class com.product.rest.impl.v1.TransactionsApiImpl, handlerConstructors=[[email protected]]}, definitionMethod=public javax.ws.rs.core.Response
अन्य सभी इसी तरह के सवाल मैं पाया है MultiPart Data
और फ़ाइल अपलोड के साथ करना था, जबकि मैं कर रहा हूँ एक सरल GET
अनुरोध करना। javax.ws.rs.code.Response
कक्षा का उपयोग करने वाले अन्य फ़ंक्शंस में यह समस्या नहीं है और सर्वर सामान्य रूप से प्रारंभ होता है।
मैंने देखा है कि समस्या तब होती है जब OffsetDateTime
कक्षा पैरामीटर में होती है (यानी param3
और param4
), लेकिन मैं यह पता लगाने में असमर्थ हूं कि क्यों। इसके अलावा, OffsetDateTime
को स्वैगर कोडेजन द्वारा चुना गया था और मैं इसे बदलने के लिए अनिच्छुक हूं कि जब भी मैं अपने स्रोतों को पुन: उत्पन्न करता हूं तो मुझे हर व्युत्पन्न फ़ाइल को कैसे बदलना होगा।
क्या किसी को आरईएसटी सेवाओं और OffsetDateTime
के साथ पहले यह समस्या थी?
यह काफी जानकारीपूर्ण था। आपका बहुत बहुत धन्यवाद! – user991710