- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在实现一个使用 Jersey、Hibernate 和 DataSources 的 JAX-RS,但在纠正了很多错误之后,我遇到了一个无法找到解决方案的问题
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type ServiceLocator with qualifiers @Default at injection point [UnbackedAnnotatedField] @Inject private org.glassfish.jersey.server.mvc.internal.ViewableMessageBodyWriter.serviceLocator at org.glassfish.jersey.server.mvc.internal.ViewableMessageBodyWriter.serviceLocator(ViewableMessageBodyWriter.java:0)
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:362) at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:284) at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:137) at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:158) at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:501) at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:61) at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:59) at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:62) at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:55) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Controller
我尝试过没有 Stateless、RequestScoped...但没有成功。
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.enterprise.context.RequestScoped;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
@Path("ejb/notificacao")
@Stateless
@LocalBean
@RequestScoped
public class NotificacaoControladorEJB {
SmartJava smartjava = new SmartJava();
@EJB
NotificacaoDAOEJB notificacaoDAO;
@GET
@Produces("application/json; charset=UTF-8")
@Path("/contador/{id}")
public Notificacao contadorGet(@PathParam("id") int id) {
long quantidade;
try {
quantidade = notificacaoDAO.contador(id);
return new Notificacao(quantidade);
} catch(Exception e) {
quantidade = 0;
System.err.println(smartjava.getFullStackTrace(e));
return new Notificacao(quantidade);
}
}
@GET
@Produces("application/json; charset=UTF-8")
@Path("/marcarcomolida/{id}")
public Notificacao marcarcomolida(@PathParam("id") int id) {
try {
Notificacao entidade = notificacaoDAO.GetNotificacao(id);
if(entidade != null) {
entidade.setVisualizado(true);
entidade.setDtvisualizado(new Timestamp(System.currentTimeMillis()));
notificacaoDAO.Alterar(entidade);
return new Notificacao(entidade.getNrseq());
} else {
return new Notificacao();
}
} catch(Exception e) {
System.err.println(smartjava.getFullStackTrace(e));
return null;
}
}
@GET
@Produces("application/json; charset=UTF-8")
@Path("/listar/{id}/{quantidade}")
public List<Notificacao> listar(@PathParam("id") int id, @PathParam("quantidade") int quantidade) {
List<Notificacao> notificacoes = new ArrayList<Notificacao>();
List<Notificacao> listaDeNotificacoes;
try {
if(quantidade < 1) {
listaDeNotificacoes = notificacaoDAO.listarTodosPorUsuarioNrseq(id);
} else {
listaDeNotificacoes = notificacaoDAO.listarQuantidadePorUsuarioNrseq(id, quantidade);
}
if(listaDeNotificacoes != null) {
for (Notificacao notificacao : listaDeNotificacoes) {
Usuario u = construtorUsuario(notificacao.getUseralvo());
notificacoes.add(new Notificacao(notificacao.getNrseq(), notificacao.getTitulo(), notificacao.getConteudo(),
notificacao.getImg(), notificacao.getLink(), notificacao.isAtivo(), notificacao.isVisualizado(),
notificacao.getDtcad(), notificacao.getDtvisualizado(), u));
}
}
return notificacoes;
} catch(Exception e) {
return new ArrayList<Notificacao>();
}
}
@POST
@Consumes("application/json; charset=UTF-8")
@Produces("application/json; charset=UTF-8")
@Path("/cadastrar/um")
public Notificacao cadastrarUm(Notificacao notificacao) {
try {
Notificacao entidade = notificacaoParaEntidade(notificacao, notificacao.getUseralvo());
notificacaoDAO.Salvar(entidade);
return new Notificacao(entidade.getNrseq());
} catch(Exception e) {
System.err.println(smartjava.getFullStackTrace(e));
return new Notificacao();
}
}
public Notificacao cadastrar(Notificacao notificacao) {
try {
Notificacao entidade = notificacaoParaEntidade(notificacao, notificacao.getUseralvo());
notificacaoDAO.Salvar(entidade);
return new Notificacao(entidade.getNrseq());
} catch(Exception e) {
System.err.println(smartjava.getFullStackTrace(e));
return new Notificacao();
}
}
public Notificacao notificacaoParaEntidade(Notificacao notificacao, Usuario usuario) {
Notificacao entidade = new Notificacao();
entidade.setTitulo(notificacao.getTitulo());
entidade.setConteudo(notificacao.getConteudo());
entidade.setImg(notificacao.getImg());
entidade.setDtcad(new Timestamp(System.currentTimeMillis()));
entidade.setUsercad(notificacao.getUsercad());
entidade.setLink(notificacao.getLink());
entidade.setAtivo(true);
entidade.setUseralvo(usuario);
return entidade;
}
private Usuario construtorUsuario(Usuario u) {
try {
return new Usuario(u.getNrseq(), u.getNome(), u.getEmail());
} catch (Exception e) {
return new Usuario();
}
}
}
DAO
import java.util.List;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
@LocalBean
public class NotificacaoDAOEJB {
//private EntityManagerFactory entityManagerFactory;
@PersistenceContext
private EntityManager entityManager;
SmartJava sj = new SmartJava();
public Notificacao Salvar(Notificacao notificacao) {
try {
this.entityManager.getTransaction().begin();
this.entityManager.persist(notificacao);
this.entityManager.getTransaction().commit();
} catch (Exception e) {
System.out.println(sj.getFullStackTrace(e));
} finally {
//this.entityManager.close();
}
return notificacao;
}
public void Alterar(Notificacao notificacao){
this.entityManager.getTransaction().begin();
this.entityManager.merge(notificacao);
this.entityManager.getTransaction().commit();
//this.entityManager.close();
}
@SuppressWarnings("unchecked")
public List<Notificacao> Listar(){
return this.entityManager.createQuery("SELECT a FROM Notificacao a ORDER BY a.dtcad").getResultList();
}
public Notificacao GetNotificacao(int nrseq) {
return this.entityManager.find(Notificacao.class, nrseq);
}
@SuppressWarnings("unchecked")
public long contador(int nrsequsuario) {
try {
return (long) this.entityManager.createQuery("SELECT COUNT(a) FROM Notificacao a "
+ "WHERE a.visualizado = false AND a.useralvo.nrseq = :usuario ORDER BY a.dtcad")
.setParameter("usuario", nrsequsuario).getSingleResult();
} catch(Exception e) {
System.err.println(sj.getFullStackTrace(e));
return 0;
}
}
@SuppressWarnings("unchecked")
public List<Notificacao> listarTodosPorUsuarioNrseq(int id) {
try {
return this.entityManager.createQuery("SELECT a FROM Notificacao a "
+ "WHERE a.useralvo.nrseq = :usuario ORDER BY a.dtcad DESC")
.setParameter("usuario", id).getResultList();
} catch(Exception e) {
System.err.println(sj.getFullStackTrace(e));
return null;
}
}
@SuppressWarnings("unchecked")
public List<Notificacao> listarQuantidadePorUsuarioNrseq(int id, int quantidade) {
try {
return this.entityManager.createQuery("SELECT a FROM Notificacao a "
+ "WHERE a.useralvo.nrseq = :usuario ORDER BY a.dtcad DESC")
.setParameter("usuario", id).setMaxResults(quantidade).getResultList();
} catch(Exception e) {
System.err.println(sj.getFullStackTrace(e));
return null;
}
}
}
WEB.XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>br.com.souvizinho.controlador</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
<!--
<resource-ref>
<description>DB Connection</description>
<res-ref-name>java:/dbsouvizinho</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> -->
<!-- COMENTAR AO GLASSFISH -->
<!--
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> -->
</web-app>
PERSISTENCE.XML
<!-- JBOS AS 7.11 E WildFly-->
<!-- --> <persistence-unit name="persistence_unit_souvizinho" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/dbsouvizinho</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
<!-- --> <!-- <property name="hibernate.connection.datasource" value="java:comp/env/jdbc/dbsouvizinho"/> -->
<!-- -->
<!-- <property name="jboss.as.jpa.providerModule" value="org.hibernate:5.2"/> -->
<!-- <property name="hibernate.classloading.use_current_tccl_as_parent" value="false" /> -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit> <!-- -->
POM.XML
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-mvc-jsp</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.grizzly/grizzly-http-server -->
<dependency>
<groupId>org.glassfish.grizzly</groupId>
<artifactId>grizzly-http-server</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
<!-- TOMCAT -->
<!--
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.Final</version>
</dependency> -->
<!-- WILDFLY 11 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.1.10.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.10.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jboss.logging/jboss-logging -->
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.0.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
</dependencies>
最佳答案
为我工作:
删除:
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-mvc-jsp</artifactId>
</dependency>
并在我的坚持上加上下面的标签
<class>br.com.souvizinho.modelo.Notificacao</class>
关于java - 焊接-001408 : Unsatisfied dependencies for type ServiceLocator with qualifiers @Default,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49210258/
我们正在使用 ExtrasUtilities.bridgeServiceLocator() 通过将应用 ServiceLocator 桥接到 Jersey ServiceLocator,将在一个 Se
我是基于 MVVM 的单元测试应用程序,它使用 prism 并使用模拟来测试 View 模型。我可以通过传递区域管理器和资源管理器的模拟对象来调用我的 viewmodel 类的构造函数,但是当控制进入
使用服务定位器与单例相比有哪些优点和缺点?我读过单例不好,但我想知道 s 服务定位器是否通常是一种更好的做事方式。 最佳答案 这两种方法都不好,因为从类契约中看不出它的依赖项是什么。也就是说, pri
我正在尝试在应用程序构造函数(从 ResourceConfig 继承的东西)中初始化我的 Jersey 应用程序中的一些组件。看起来像这样 public Application(@Context Se
最近看了Mark Seemann's article关于服务定位器反模式。 作者指出了 ServiceLocator 是反模式的两个主要原因: API 使用问题 (我对此非常满意) 当类使用服务定位器
我正在尝试创建一个可重用的组件,该组件从居民文件中定义的服务创建一个ServiceLocator。我需要确定 ServiceLocator 是否还有内置服务之外的服务。如果没有,也许会向用户记录一些警
最近看了Mark Seemann's article关于服务定位器反模式。 作者指出了 ServiceLocator 是反模式的两个主要原因: API 使用问题 (我对此非常满意) 当类使用服务定位器
我正在尝试为单元测试设置服务定位器,如下所示: var mockS = new Mock(); ServiceLocator.SetLocatorProvider(() => mockS.Object
我愿意: 使所有需要它们的类都可以看到通常需要的服务, 使用最少的样板文件,并且 不牺牲可测试性! 这是一个小项目,我认为 DI 可能有点矫枉过正,但也许我错了?反正我一直关注ServiceLocat
我 99% 的依赖是通过 @Autowired Spring 注解使用 DI 模式管理的。 尽管如此,在特定场景中,直到运行时我才能确定要使用哪个实现。 最广为人知的情况,是解析器的多重实现。 第一种
我有一个多模块 GWT 项目,我想使用 ServiceLocators。我有 3 个模块: “客户端”依赖于共享 “共享” “服务器”依赖于共享 我这样写了ServiceLocator: public
我正在对使用统一依赖注入(inject)框架的类进行单元测试。 这将返回 null: ServiceLocator.Current.GetInstance(); 我怎样才能让它返回一个模拟对象或只是对
有人知道 Microsoft.Practices.ServiceLocation 来自哪里吗?这是 MS EnterpriseLibrary 中使用的命名空间和 dll。诚然,这是一个非常简单的 dl
这是我的 previous question 的后续问题. 我正在尝试为我的 ServiceLocator 类编写测试用例,但它给了我以下错误: com/iplanet/ias/admin/commo
我使用了 axis Web 服务客户端向导 + 开发客户端 slider 来生成文件: Mage_Api_Model_Server_HandlerBindingStub Mage_Api_Model_
开始学习后一直在思考一个问题Prism ...为什么我们需要使用 Service locator如果我们有 MEF以满足所有需要的导入。 Common Service Locator link for
我开始使用 Prism 和 MVVM 开发一个 WPF 项目,我正在尝试使用 eventAggregator,但是当执行下面的行时会引发异常: IServiceLocator ob = Service
在我的 App.xaml.cs 中有 private void InitializeContainer() { var catalogs = new AggregateCatalog();
我有一个 J2EE webapp,用于上传文件,然后由数据库过程处理该文件。因为我们不希望 webapp 必须等到数据库过程完成,所以它在不同的线程中执行。 运行在独立线程中的进程需要获取并关闭自己的
我正在使用带有 RequestFactory 的 GWT 2.2。该应用程序有一个现有的服务层(服务器端),所以我使用 ServiceLocator 来提供这些实现。 My Proxy 和 Reque
我是一名优秀的程序员,十分优秀!