Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧、支柱和x2B;休眠项目启动_Java_Xml_Spring_Hibernate_Struts2 - Fatal编程技术网

Java 弹簧、支柱和x2B;休眠项目启动

Java 弹簧、支柱和x2B;休眠项目启动,java,xml,spring,hibernate,struts2,Java,Xml,Spring,Hibernate,Struts2,我有下一个配置: hibernate.cfg.xml 我查过类似的问题,但没有发现 更新 我已从应用程序上下文中删除上下文扫描,现在获取NPE地址: java.lang.NullPointerException com.project.controller.ListProductAction.execute(ListProductAction.java:25) 以下是代码: public String execute() { listProduct = productDao.list()

我有下一个配置:

hibernate.cfg.xml 我查过类似的问题,但没有发现

更新

我已从应用程序上下文中删除上下文扫描,现在获取NPE地址:

java.lang.NullPointerException com.project.controller.ListProductAction.execute(ListProductAction.java:25)

以下是代码:

public String execute() {
    listProduct = productDao.list();
    return SUCCESS;
  }
正如我所研究的,sessionFactory是正常实例化的,但spring(据我所知)无法进行绑定,因此productDao在ListProductAction处为空

更新


这是警告吗?你能忽略它吗?问题是什么?不,这不是警告。这是我在服务器控制台中看到的,我无法访问应用程序的起始页(tomcat没有运行它,尽管它应该根据设置运行)。还有一个非常大的stacktrace,但是我在这里只添加了根cause@IsaiahvanderElst这是一个无用的,个人的,也是误导性的评论,因为这是Struts2,不是Struts,它们完全是different@IsaiahvanderElstJ2EE绝对是传统的,因为J2EE是Java1.4。从Java1.5开始,它被称为JavaEE。我使用JavaEE和Struts2,没有任何问题。根据我上一次看到的内容(几年前),SpringMVC在美国非常流行,而在世界其他地方却不那么流行。(继续->)我有时使用它,我喜欢它,它有一些比Struts2更多和更少的东西,我仍然更喜欢。JavaEE标准MVC框架是JSF2,我不太喜欢它。请注意,Struts2即将发布,因为2015年的Struts2与2008年的Struts2有很大不同。Struts3将是2015年的Struts2,还有更多。。。然而,我想所有这些技术很快就会被客户端framworks所取代。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.project.model">
  <class name="Product" table="PRODUCT">
    <id name="id" column="PRODUCT_ID">
      <generator class="native"/>
    </id>
    <property name="name" />
    <property name="description" />
    <property name="price" />
  </class>
</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
  <package name="Struts2Spring4Hibernate4Demo" extends="struts-default">

    <action name="listProduct" class="com.project.controller.ListProductAction">
      <result name="success">/WEB-INF/views/productList.jsp</result>
    </action>

  </package>
</struts>
<?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:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

  <bean id="productDao" class="com.project.dao.ProductDaoImpl">
    <constructor-arg>
      <ref bean="sessionFactory" />
    </constructor-arg>
  </bean>

  <bean id="listProductActionBean" class="com.project.controller.ListProductAction">
    <property name="productDao" ref="productDao" />
  </bean>

  <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:hibernate.cfg.xml" />
  </bean>

  <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
    <property name="driverClass" value="org.h2.Driver" />
    <property name="url" value="jdbc:h2:~/test" />
    <property name="username" value="sa" />
    <property name="password" value="" />
  </bean>

  <tx:annotation-driven />

  <bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
  </bean>
  <context:component-scan base-package="com.project.controller" />.
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
        http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID" version="3.1">

  <display-name>Struts2Spring4Hibernate4XML</display-name>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/applicationContext.xml</param-value>
  </context-param>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <filter>
    <filter-name>DispatcherFilter</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    <init-param>
      <param-name>actionPackages</param-name>
      <param-value>com.project.contoller</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>DispatcherFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
package com.project.dao;


import java.util.List;

import javax.transaction.Transactional;

import com.project.model.Product;
import org.hibernate.Criteria;
import org.hibernate.SessionFactory;

public class ProductDaoImpl implements ProductDao {
  private SessionFactory sessionFactory;

  public ProductDaoImpl(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
  }

  @Override
  @Transactional
  public List<Product> list() {
    @SuppressWarnings("unchecked")
    List<Product> listProduct = (List<Product>)
      sessionFactory.getCurrentSession().createCriteria(Product.class)
        .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
        .list();
    return listProduct;
  }
}
package com.project.controller;

import com.project.dao.ProductDao;
import com.projectmodel.Product;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import java.util.List;

public class ListProductAction extends ActionSupport {
  private ProductDao productDao;
  private List<Product> listProduct;

  public void setProductDao(ProductDao ProductDao) {
    this.productDao = ProductDao;
  }

  public String execute() {
    listProduct = productDao.list();
    return SUCCESS;
  }

  public List<Product> getListProduct() {
    return listProduct;
  }
}
WARNING [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.support.XmlWebApplicationContext.doClose Exception thrown from LifecycleProcessor on context close
 java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: root of context hierarchy
    at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:357)
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:877)
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
    at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:579)
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:115)
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4776)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5390)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
    at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1648)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:463)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:413)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
    at sun.rmi.transport.Transport$2.run(Transport.java:202)
    at sun.rmi.transport.Transport$2.run(Transport.java:199)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:198)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:567)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(TCPTransport.java:619)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:684)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:681)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:681)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
public String execute() {
    listProduct = productDao.list();
    return SUCCESS;
  }