问题描述
我在运行 Java 应用程序时收到 WELD-001440 错误。我在 Servlet 类上有一个简单的用户界面。它的主要功能是添加新用户。我正在尝试在另一个类中实现使用 api 进行电子邮件验证。
EmailValidationApiOdjemalec 是我尝试从中发出 API 请求的类。 JPAServlet 是我从中调用 EmailValidationApiOdjemalec 类的类。
这是 EmailValidationApiOdjemalec 类
package si.fri.prpo.sledilnik.storitve.odjemalci;
import si.fri.prpo.sledilnik.entitete.Uporabnik;
import si.fri.prpo.sledilnik.storitve.zrna.UpravljanjePrehodovZrno;
import javax.annotation.postconstruct;
import javax.inject.Inject;
import javax.print.attribute.standard.Media;
import javax.ws.rs.ProcessingException;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import java.net.http.HttpRequest;
import java.util.logging.Logger;
public class EmailValidationApiOdjemalec {
private Client httpClient;
private String baseURl = "https://rapidprod-something something";
private String key = "my personal key";
private String host = "host";
private Logger log = Logger.getLogger(EmailValidationApiOdjemalec.class.getName());
@postconstruct
private void init() {
log.info("Inicializacija zrna " + EmailValidationApiOdjemalec.class.getSimpleName());
httpClient = ClientBuilder.newClient();
}
public boolean imaUstrezenEmail(Uporabnik uporabnik) {
String email = uporabnik.getEmail();
try {
httpClient
.target(baseURl)
.queryParam("text",email)
.request(MediaType.APPLICATION_JSON)
.header("x-rapid-host","whoisapi-email-verification-v1.p.rapidapi.com")
.header("x-rapid-key","my rapid key ")
.get();
} catch (WebApplicationException | ProcessingException e) {
System.out.println("Exception");
}
log.info(httpClient.toString());
return true;
}
}
现在这是一个 JPAServlet 类,我尝试从中注入,然后从 EmailValidationApiOdjemalec 类调用方法。
package si.fri.prpo.sledilnik.servleti;
import si.fri.prpo.sledilnik.entitete.Uporabnik;
import si.fri.prpo.sledilnik.storitve.dto.PrehodDto;
import si.fri.prpo.sledilnik.storitve.dto.ProstorDto;
import si.fri.prpo.sledilnik.storitve.odjemalci.EmailValidationApiOdjemalec;
import si.fri.prpo.sledilnik.storitve.zrna.*;
import si.fri.prpo.sledilnik.entitete.Prostor;
import si.fri.prpo.sledilnik.api.v1.viri.UporabnikiVir;
import si.fri.prpo.sledilnik.entitete.Vhod;
import si.fri.prpo.sledilnik.entitete.Prehod;
import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Model;
import javax.inject.Inject;
import javax.servlet.servletexception;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.logging.Logger;
@WebServlet("/servlet")
public class JPAServlet extends HttpServlet {
@Inject
private UporabnikiZrno uporabnikiZrno;
@Inject
private EmailValidationApiOdjemalec emailValidationApiOdjemalec;
@Override
protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws servletexception,IOException {
Logger log = Logger.getLogger(UporabnikiVir.class.getName());
Uporabnik zan = new Uporabnik();
zan.setIme("Zan");
zan.setPriimek("Debevec");
zan.setProstor(dnevnaSoba);
zan.setEmail("zan@gmail.com");
if (!emailValidationApiOdjemalec.imaUstrezenEmail(zan)) {
log.info("Uporabnik nima pravega emaila");
}
uporabnikiZrno.dodajUporabnika(zan);
}
}
还有一条错误信息:
2020-12-23 19:58:31.673 WARN -- org.jboss.weld.bootstrap.Validator -- WELD-001440: Scope type @javax.enterprise.context.Dependent() used on injection point [BackedAnnotatedField] @Inject @Dependent private si.fri.prpo.sledilnik.servleti.JPAServlet.emailValidationApiOdjemalec
at si.fri.prpo.sledilnik.servleti.JPAServlet.emailValidationApiOdjemalec(JPAServlet.java:0)
StackTrace
2020-12-23 19:58:31.674 WARNING -- org.eclipse.jetty.annotations.ServletContainerInitializeRSStarter --
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type EmailValidationApiOdjemalec with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject @Dependent private si.fri.prpo.sledilnik.servleti.JPAServlet.emailValidationApiOdjemalec
at si.fri.prpo.sledilnik.servleti.JPAServlet.emailValidationApiOdjemalec(JPAServlet.java:0)
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:378)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:290)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:143)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:164)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:526)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:64)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:62)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:62)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:55)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
谁能发现哪里出了问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)