我有一个GWT + Hibernate + JPA + Spring配置文件,可以使用Spring 3.0.x + Hibernate 3.6.x. 当我升级到Spring 3.1和Hibernate 4.0时,抛出以下异常:
与Hibernate 4和Spring 3.1有任何已知的不兼容性吗?
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [META-INF/application-context.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: myPu] Unable to build EntityManagerFactory
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
    at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:543)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)
    at … 我有一个JSP,我试图从我的模型中打印出值,但没有出现在我引用这些值的地方.这是我设置值的控制器方法.
@RequestMapping(value = "/poll1", method = RequestMethod.POST)
public String processPoll1(@RequestParam String vote,
        HttpServletResponse response, Model model) {
    Map<String, Object> resultMap = poll1DAO.tallyVote(vote);
    Cookie poll1 = new Cookie("poll1", "voted");
    model.addAttribute("poll1Yes", resultMap.get("yes").toString());
    model.addAttribute("poll1No", resultMap.get("no").toString());
    poll1.setMaxAge(maxSeconds);
    response.addCookie(poll1);
    return "redirect:/polls";
}
这是JSP中引用Model属性的部分.
<table>
    <tr>
        <td><b><i>Poll #1 -- </i></b>Would you like to have a 30-year reunion in 2016?<br></td>
    </tr>
    <tr>
        <td><b>Yes</b></td>
        <td> – <c:out value='${model.poll1Yes}' /><br /></td>
    </tr>
    <tr>
        <td><b>No</b></td>
        <td> – <c:out value='${model.poll1No}' /><br />
        </td>
    </tr>
</table>
这是我的输出.不是实际值,而是在属性的位置打印出任何内容.
Poll #1 -- Would you like to have a …这是我第一次尝试Spring3的@Scheduled,但发现我无法承诺DB.这是我的代码:
@Service
public class ServiceImpl implements Service , Serializable
{
  @Inject 
  private Dao dao;
  @Override
  @Scheduled(cron="0 0 * * * ?") 
  @Transactional(rollbackFor=Exception.class)
  public void hourly()
  {
    // get xxx from dao , modify it
    dao.update(xxx);
  }
}
我认为它应该工作,我可以看到它每小时启动并从DB加载xxx,但数据不会提交给DB.
有许多人tx:annotation-driven在春天的XML:
<bean id="entityManagerFactoryApp" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="persistenceUnitName" value="myapp"/>
</bean>
<bean id="transactionManagerApp" class="org.springframework.orm.jpa.JpaTransactionManager">
  <property name="entityManagerFactory" ref="entityManagerFactoryApp" />
</bean>
<tx:annotation-driven transaction-manager="transactionManagerApp" />
有人能告诉我我错过了什么吗?
我有一个' 脏 '的解决方案:
@Service
public class ServiceImpl implements Service , Serializable
{
  @Inject 
  private Dao dao;
  @Inject
  @Qualifier("transactionManagerApp")
  private PlatformTransactionManager …spring dependency-injection scheduling transactional spring-3
如何告诉Spring运行该init方法?我需要获取Proxied Async类并使用它进行一些初始化.
@Configuration
@EnableAsync
public class Config  {
 @Bean
 public AsyncBean asyncProxyBean(){
    return new AsyncBean();
 }
 public void init(){
   doStuffWithProxy(asyncProxyBean());
 }
 @Bean
 public String thisIsHack(){ //this runs the init code but bean is a bit hacky
    doStuffWithProxy(asyncProxyBean());
    return "";
 }
}
Spring 3.1.1.RELEASE与Apache Maven 3.0.3和Maven Shade插件1.6.
使用mvn shade插件将工件打包在uber-jar中,包括它的依赖项:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
        <phase>package</phase>
        <goals>
            <goal>shade</goal>
        </goals>
        <configuration>
            <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                    <mainClass>com.MyApplication</mainClass>
                </transformer>
            </transformers>
        </configuration>
    </execution>
</executions>
似乎打包很好,但在执行抱怨Spring NamespaceHandler问题:
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/util]
Offending resource: class path resource [spring/test-context.xml]
这适用于util和p命名空间,但期望它不限于这些:
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
如果我手写重写属性或列表(util),问题就会消失.
以下允许在Spring 3.0中声明单例bean:
@Bean
@Scope(BeanDefinition.SCOPE_SINGLETON)
private void setBean1(Bean1 b1) {
    this.b1 = b1;
}
但是,BeanDefinition没有为请求,会话和全局会话定义范围值.这些定义在哪里?否则,我应该使用@Scope("request"),@Scope("session")并@Scope("global session")?
我正在以编程方式/动态创建原型bean.我想在启动后将这些bean放在jmx控制台中.我怎么能区分它们?我正在使用anotations将我的bean添加到jmx并且我有
@ManagedResource(objectName="bean:name=MybBean")
我需要动态注入objectName.知道我怎么能这样做?
这是我的jmx配置:
<context:mbean-export server="mbeanServer" />
<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean" />
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"
        lazy-init="false">
        <property name="beans">
            <map>
                <entry key="Server:name=HttpAdaptor">
                    <bean class="mx4j.tools.adaptor.http.HttpAdaptor">
                        <property name="port" value="8000" />
                        <property name="host" value="0.0.0.0" />
                        <property name="processor">
                            <bean class="mx4j.tools.adaptor.http.XSLTProcessor" />
                        </property>
                    </bean>
                </entry>                
            </map>
        </property>
        <property name="listeners">
            <list>
                <!--
                -->
                <bean class="com.fixgw.jmx.HttpAdaptorMgr">
                    <property name="mbeanServer" ref="mbeanServer" />
                </bean>
            </list>
        </property>
    </bean>
   <bean id="sessionMDB" class="com.fixgw.mdb.SessionMDB"
        scope="prototype" lazy-init="true">
        <constructor-arg ref="0" />
        <constructor-arg ref="0" />
    </bean>
我正在使用<mvc:annotation-driven/>,我想配置RequestMappingHandlerMapping禁用useTrailingSlashMatch.当我声明另一个RequestMappingHandlerMapping时,我将结束2 RequestMappingHandlerMapping.我该如何配置RequestMappingHandlerMapping?
我使用Spring 3.2.5而没有全新的JSR-356 WebSockets支持.
我想在我的@ServerEndpointWebSocket服务器中使用singleton-bean引用,它由servlet容器本身实例化,而不是在Spring上下文中实例化.
干净的方法是什么?
我目前的解决方案:我@Service在静态字段中使用实例制作了单例bean:
@Service
public class WebSocketSupportBean {
    private volatile static WebSocketSupportBean instance = null;
    public static WebSocketSupportBean getInstance() {
        return instance;
    }
    public WebSocketSupportBean() {
        instance = this;
    }
并且只是@ServerEndpoint通过静态方法获取它,如果null返回则断开用户连接(如果在服务器启动期间bean没有创建但用户连接时):
两者有什么区别?两者都有getParameter方法和setAttribute方法,然后两者之间的区别?
1)哪一个更好用?
2)请解释可以使用它们的具体方案.