我一直在开发一个gwt应用程序,该应用程序应该具有一个休息服务来访问数据库,包括它自己的数据库和其他远程数据库。我使用Spring来更好地使用数据库(objectdb),而不是在Jersey实习。这是给出问题的代码:
User.java
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
@XmlRootElement
public class User implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
private String name;
private String surname;
private int age;
...
}
客户.java
@Entity
@XmlRootElement
public class Customer extends User implements java.io.Serializable{
private static final long serialVersionUID = 1L;
@Column(unique=true)
private String fiscalCode;
@Column(unique=true)
private String docNumber;
...
}
CustomerDAO.java
@Repository("customerDAO")
public class CustomerDAO extends JpaDAO<Customer> {
...
}
JpaDAO.java
public abstract class JpaDAO<E> {
protected Class<E> entityClass;
@PersistenceContext(unitName = "MyPersistenceUnit")
protected EntityManager em;
@SuppressWarnings("unchecked")
public JpaDAO() {
ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[0];
}
public List<E> findAll() {
TypedQuery<E> q = em.createQuery(
"SELECT h FROM " + entityClass.getName() + " h", entityClass);
return q.getResultList();
}
最后是CustomerServiceImpl.java
@Service("customerService")
@Path("/customers")
public class CustomerServiceImpl implements CustomerService {
@Autowired
private CustomerDAO customerDAO;
@Override
@GET
@Produces({MediaType.APPLICATION_XML})
public List<Customer> findAll() {
return customerDAO.findAll();
}
}
web.xml正确编写。当我表演
http://127.0.0.1/rest/customers
似乎customerDAO为空,并且会导致该异常…
你能帮我吗?
这是web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
<!-- Servlets -->
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>RONF.html</welcome-file>
</welcome-file-list>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>springGwtRemoteServiceServlet</servlet-name>
<servlet-class>org.spring4gwt.server.SpringGwtRemoteServiceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springGwtRemoteServiceServlet</servlet-name>
<url-pattern>/ronf/ronfServices/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Jersey</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>it.unibo.ronf.server.services</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-spring</artifactId>
<version>${jersey.version}</version>
</dependency>
</web-app>
这是applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">
<context:component-scan base-package="it.unibo.ronf"/>
<context:annotation-config/>
<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/>
<task:executor id="myExecutor" pool-size="5"/>
<task:scheduler id="myScheduler" pool-size="10"/>
<tx:annotation-driven/>
<bean class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" id="entityManagerFactory">
<property name="persistenceUnitName" value="MyPersistenceUnit"/>
</bean>
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
</beans>
您尚未customerDAO
在applicationContext.xml文件中为其创建bean
。如果要将其用作Bean,请CustomerServiceImpl.java
在applicationContext.xml中创建其Bean。
将以下代码放在applicationContext.xml中:
<bean class="name.of.package.CustomerDAO" id="customerDAO">
</bean>
并@Component
在您的CustomerServiceImpl.java
课程上添加注释。
这应该为您工作。作为参考,您可以使用本教程。在这里,您可以更好地了解spring和JAX-RS的集成。
问题内容: 我刚开始使用Spring DI,但是我在依赖注入方面苦苦挣扎,更糟糕的是,我什至不确定为什么对我来说似乎还可以。希望你们能帮助我! 问题是注释为@Autowired的属性始终为null 我有一些具有Maven结构的项目: com.diegotutor.lessondeliver com.diegotutor.utility 我正在通过Tomcat 7运行示例 我在我的使用以下依赖项:
我想构建一个restful服务/API。我使用了一些像play这样的框架来构建它,但我想尝试其他更有效的方法。我听说Jersey是构建rest API的常用库,Spring也是一个很好的框架。但我也看到了一些类似Spring+Jersey的解决方案。因此,我对那些rest API解决方案有点困惑。 我的目标是构建几个将JSON作为输入/输出的rest API。我有jar文件作为后端处理逻辑来处理输
问题内容: 我想将JSON-Post中的值解析为Java-Variables。但是它们总是空的! JSON发布: 我尝试将其解析为Java变量: 如果我这样尝试: Tomcat说: Java类int,Java类型int和MIME媒体类型application / json的消息正文阅读器;找不到字符集= UTF-8。 任何帮助都很好,我只是不明白。 问题答案: 您需要创建一个POGO,Jersey
我正试着用带Spring的泽西。但无论如何,我不明白为什么Spring依赖项没有被注入到Rest类中。 我的web.xml文件如下所示 My ApplicationContext.xml是标准的,并指定组件扫描的基本包:
我正在编写一个junit测试用例来测试rest调用。 我试图嘲笑售票服务,它工作正常,但当我在REST服务调用中嘲笑它时。它不嘲笑。 我正在使用springboot,mongodb与REST。 有什么解决这个问题的建议吗? }
问题内容: 我正在开发一个使用Jersey框架的REST应用程序。我想知道如何控制用户身份验证。我搜索了很多地方,最近的文章是:http : //weblogs.java.net/blog/2008/03/07/authentication- jersey 。 但是,本文只能与GlassFish服务器和附加数据库一起使用。无论如何,在到达请求的REST资源之前,我是否可以在Jersey中实现一个接