Как получить доступ к базе данных, используя предоставляемые Hibernate расширения JPA на платформе struts2? - PullRequest
0 голосов
/ 11 июля 2011

Я изучал разработку на основе Struts 2, и мне было очень трудно получить доступ к базовым функциям CRUD базы данных с использованием расширений JPA, предоставленных Hibernate для Struts 2.

Я использую maven в качестве инструмента для сборки, и яя застрял здесь на неделю или еще что-то.

Я думаю, что я не могу вписаться в файл persistence.xml или в какой-то файл сопоставления, но кто-то может дать мне шаги, необходимые для того, чтобыдоступ к базе данных с использованием упомянутых технологий.

Я использую базу данных MySQL, и ниже приведен код:

persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLNSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml" version="2.0">

    <persistence-unit name="APP">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>com.app.classes.User</class>
        <mapping-file>User.hbm.xml</mapping-file>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource" />
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost/APP" />
            <property name="hibernate.connection.username" value="root" />
            <property name="hibernate.connection.password" value="9250864418" />
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.archive.autodetection" value="class" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
</persistence>

User.java (класс объектной модели)

package com.app.classes;

import javax.persistence.Entity;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.*;

@Entity
@Table(name = "APP_USER", schema = "APP")
public class User implements Serializable {
    private String firstName;
    private String lastName;
    private String emailId;
    private String password;

    @Id
    @Column(name = "EMAIL")
    public String getEmailId() {
        return emailId;
    }

    public void setEmailId(String emailId) {
        this.emailId = emailId;
    }

    @Column(name = "FIRST_NAME")
    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    @Column(name = "LAST_NAME")
    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    @Column(name = "USER_PASSWORD")
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

BaseAction.java (класс действия)

package com.app.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;
import com.service.UserService;

public class BaseAction extends ActionSupport implements ModelDriven<User>, Preparable {
    private User user;
    private String emailId;
    protected UserService service;

    @Override
    public User getModel() {
        return user;
    }

    public void getEmailId(String emailId) {
        this.emailId = emailId;
    }

    public String setEmailid() {
        return emailId;
    }

    public void setUserService(UserService service) {
        this.service = service;
    }

    @Override
    public void prepare() throws Exception {
        if (emailId == null || "".equals(emailId)) {
            user = new User();
        } else {
            user = service.findByEmailId(user.getEmailId());
        }
    }

    @Override
    public String execute() throws Exception {
        return SUCCESS;
    }
}

класс UserServiceImpl (служба реализации класса)

package com.app.service;

import org.hibernate.Session;

import java.util.*;
import com.app.classes.User;
import com.app.classes.HibernateUtil;
import javax.persistence.*;

public class UserServiceImpl implements UserService {
    private EntityManager em;

    public void setEntityManager(EntityManager em) {
        this.em = em;
    }

    public void save(User user) {
        if (user.getEmailId() == null) {
            // new
            em.persist(user);
        } else {
            // update
            em.merge(user);
        }
    }

    private EntityManager getEntityManager() {
        return em;
    }

    public User findByEmailId(String emailId) {
        return em.find(User.class, emailId);
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="starter" version="2.4" 
         xmlns="http://java.sun.com/xml/ns/j2ee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Struts 2 - Maven Archetype - Starter</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext*.xml</param-value>
    </context-param>

    <!-- Filters -->
    <filter>
        <filter-name>action2-cleanup</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
    </filter>
    <filter>
        <filter-name>sitemesh</filter-name>
        <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
    </filter>
    <filter>
        <filter-name>action2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>action2-cleanup</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>sitemesh</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>action2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

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


    <!-- Servlets -->
    <servlet>
        <servlet-name>dwr</servlet-name>
        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </init-param>
    </servlet>
    <servlet>
        <servlet-name>jspSupportServlet</servlet-name>
        <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
        <load-on-startup>5</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dwr</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>


    <!-- Welcome file lists -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

Struts.xml

<?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="myPackage" extends="struts-default">
    <default-interceptor-ref name="paramsPrepareParamsStack" />
        <action name="base" class="com.app.action.BaseAction">
            <result>/jsp/user.jsp</result>
        </action>
    </package>
</struts>

Я сделал так, как сказал Сурав, но в создании бобов все еще есть проблема, здесь веснавозможность создания bean-компонента, определенного в файле context.xml приложения.Этот bean-компонент в основном предназначен для моего класса UserServiceImpl, поэтому я предоставил трассировку стека сервера. Любое предложение будет полезно

    SEVERE: Context initialization failed

org.springframework.beans.factory.BeanCreationException: Ошибка при создании bean-компонента с именем 'userService'определено в файле [/home/ankur/Desktop/app/target/classes/applicationContext.xml]: не удалось создать экземпляр компонента;вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр класса бина [com.app.service.UserServiceImpl]: конструктор вызвал исключение;вложенное исключение - java.lang.NoClassDefFoundError: org / jboss / util / file / ArchiveBrowser $ Filter в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean.ejworkjact.raf.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:839) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:440) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory $ 1.Run (AbstractAutowireCapableBeanFactory.java: 409) в java.security.$ 1.getObject (AbstractBeanFactory.java:264) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:261) в org.springfactan.Bean.Bean185) в org.springframework.beans.factory.support..support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:728) при org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:380) в org.springframework.web.context.ContextLoader.createWebApplicationContext (ContextLoader.java:255) в org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:199) в org.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListener.java:45) в org.mortbay.jetty.handler.ContextHandler.startContext (ContextHandler.java:548) в org.mortbay.jetty.servlet.Context.startj1на org.mortbay.jetty.webapp.WebAppContext.startContext (WebAppContext.java:1250) на org.mortbay.jetty.handler.ContextHandler.doStart (ContextHandler.java:517) на org.mortbay.jetty.webapp.WebAppContext.doStart (WebAppContext.java:467) в org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart (Jetty6PluginWebAppContext.java:115) на org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:50) в org.mortbay.jetty.handler.HandlerCollection.doStart (HandlerCollection.java:152) в org.mortbay.jetty.handler.ContextHandlerCollection.doStart (ContextHandlerCollection.java:156) на org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:50) в org.mortbay.jetty.handler.HandlerCollection.doStart (HandlerCollection.java:152) на org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:50) на org.mortbay.jetty.handler.HandlerWrapper.doStart (HandlerWrapper.java:130) на org.mortbay.jetty.Server.doStart (Server.java:224) на org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:50) на org.mortbay.jetty.plugin.Jetty6PluginServer.start (Jetty6PluginServer.java:132) на org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty (AbstractJettyMojo.java:441) на org.mortbay.jetty.plugin.AbstractJettyMojo.execute (AbstractJettyMojo.java:383) на org.mortbay.jetty.plugin.AbstractJettyRunMojo.execute (AbstractJettyRunMojo.java:210) на org.mortbay.jetty.plugin.Jetty6RunMojo.execute (Jetty6RunMojo.java:184) в org.apache.maven.plugin.DefaultPluginManager.executeMojo (DefaultPluginManager.java:490) в org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals (DefaultLifecycleExecutor.java:694) в org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal (DefaultLifecycleExecutor.java:569) в org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal (DefaultLifecycleExecutor.java:539) в org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures (DefaultLifecycleExecutor.java:387) в org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments (DefaultLifecycleExecutor.java:348) в org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute (DefaultLifecycleExecutor.java:180) в org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:328) в org.apache.maven.DefaultMaven.execute (DefaultMaven.java:138) в org.apache.maven.cli.MavenCli.main (MavenCli.java:362) в org.apache.maven.cli.compat.CompatibleMain.main (CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:616) в org.codehaus.classworlds.Launcher.launchEnhanced (Launcher.java:315) в org.codehaus.classworlds.Launcher.launch (Launcher.java:255) в org.codehaus.classworlds.Launcher.mainWithExitCode (Launcher.java:430) в org.codehaus.classworlds.Launcher.main (Launcher.java:375) Вызвано: org.springframework.beans.BeanInstantiationException: Не удалось создать экземпляр класса бина [com.app.service.UserServiceImpl]: конструктор вызвал исключение; Вложенным исключением является java.lang.NoClassDefFoundError: org / jboss / util / file / ArchiveBrowser $ Filter в org.springframework.beans.BeanUtils.instantiateClass (BeanUtils.java:115) в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy.java:61) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean (AbstractAutowireCapableBeanFactory.java:877) ... еще 55 Вызвано: java.lang.NoClassDefFoundError: org / jboss / util / file / ArchiveBrowser $ Filter в org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory (HibernatePersistence.java:119)в javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:83) в javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:60) на com.app.service.UserServiceImpl. (UserServiceImpl.java:10) at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:532) в org.springframework.beans.BeanUtils.instantiateClass (BeanUtils.java:100) ... еще 57 Вызывается: java.lang.ClassNotFoundException: org.jboss.util.file.ArchiveBrowser $ Filter на java.net.URLClassLoader $ 1.run (URLClassLoader.java:217) at java.security.AccessController.doPrivileged (собственный метод) на java.net.URLClassLoader.findClass (URLClassLoader.java:205) в java.lang.ClassLoader.loadClass (ClassLoader.java:321) в org.codehaus.classworlds.RealmClassLoader.loadClassDirect (RealmClassLoader.java:195) в org.codehaus.classworlds.DefaultClassRealm.loadClass (DefaultClassRealm.java:255) в org.codehaus.classworlds.DefaultClassRealm.loadClass (DefaultClassRealm.java:274) в org.codehaus.classworlds.RealmClassLoader.loadClass (RealmClassLoader.java:214) в java.lang.ClassLoader.loadClass (ClassLoader.java:266) на org.mortbay.jetty.webapp.WebAppClassLoader.loadClass (WebAppClassLoader.java:401) на org.mortbay.jetty.webapp.WebAppClassLoader.loadClass (WebAppClassLoader.java:363) ... еще 66 2011-07-11 17: 49: 00.008 :: WARN: Не удалось запустить контекст org.mortbay.jetty.plugin.Jetty6PluginWebAppContext@7e5619 {/ app, / home / ankur / Desktop / app / src / main / webapp} org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'userService', определенным в файле [/home/ankur/Desktop/app/target/classes/applicationContext.xml]: сбой при создании экземпляра бина; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр класса бина [com.app.service.UserServiceImpl]: конструктор вызвал исключение; Вложенным исключением является java.lang.NoClassDefFoundError: org / jboss / util / file / ArchiveBrowser $ Filter в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean (AbstractAutowireCapableBeanFactory.java:883) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:839) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:440) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory $ 1.run (AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged (собственный метод) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:380) в org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:264) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:261) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:185) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:164) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:429) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:728)по адресу org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:380) по адресу org.springframework.web.context.ContextLoader.createWebApplicationContext (ContextLoader.java:eb.tete.tetetete.tetetete.tete.tef(ContextLoader.java:199) в org.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListener.java:45) в org.mortbay.jetty.handler.ContextHandler.startContext (ContextHandort.gt) или в.jetty.servlet.Context.startContext (Context.java:136) в org.mortbay.jetty.webapp.WebAppContext.startContext (WebAppContext.java:1250) в org.mortbay.jetty.handler.ContextHandler.doStart (ContextHandler: ContextH517) по адресу org.mortbay.jetty.webapp.WebAppContext.doStart (WebAppContext.java:467) по адресу org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart (Jetty6PluginWebAppContext.artA.t.b.yg.tg) 11(AbstractLifeCycle.java:50) в org.mortbay.jetty.handler.HandlerCollection.doStart (HandlerCollection.java:152) в org.mortbay.jetty.handler.ContextHandlerCollection.doStart (ContextHandlerCollection.java:156) в org.mortbay.component.AbstractLifeCycle.start (AbstractLjg50).mortbay.jetty.handler.HandlerCollection.doStart (HandlerCollection.java:152) в org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:50) в org.mortbay.jetty.handler.HandlerWrapper.raart: 130) на org.mortbay.jetty.Server.doStart (Server.java:224) на org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:50) на org.mortbay.jetty.plugin.Jetty6PluginServer.start (Jetty6PluginServer.java:132) на org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty (AbstractJettyMojo.java:441) на org.mortbay.jetty.plugin.AbstractJettyMojo.execute3oj.jj.tjmM0.plugin.AbstractJettyRunMojo.execute (AbstractJettyRunMojo.java:210) в org.mortbay.jetty.plugin.Jetty6RunMojo.execute (Jetty6RunMojo.java:184) в org.apache.maven.plugin.DefaultPluginManager.executeMojo (DefaultPluginManager.java:490) в org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals (DefaultLifecycleExecutor.java:694) в org.ife.Excycle.cycle.executeStandaloneGoal (DefaultLifecycleExecutor.java:569) в org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal (DefaultLifecycleExecutor.java:539) в org.apache.maven.lifecycle.DefaultLifecycleExecutor.exg.jpgapache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments (DefaultLifecycleExecutor.java:348) в org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute (DefaultLifecycleExecutor.java:180) в org.apache.maven.DefaultMaven:328) в org.apache.maven.DefaultMaven.execute (DefaultMaven.java:138) в org.apache.maven.cli.MavenCli.main (MavenCli.java:362) в org.apache.maven.cli.compat.CompatibleMain.main (CompatibleMain.java:60) на солнцеMethod.invoke (Method.java:616) в org.codehaus.classworlds.Launcher.launchEnhanced (Launcher.java:315) в org.codehaus.classworlds.Launcher.launch (Launcher.java:255) в org.codehaus.classworlds.Launcher.mainWithExitCode (Launcher.java:430) в org.codehaus.classworlds.Launcher.main (Launcher.java:375) Причина: org.springframework.beans.BeanInstantiationException: Не удалось создать экземпляр класса бина [com.app.serser.UserServiceImpl]: конструктор сгенерировал исключение;Вложенным исключением является java.lang.NoClassDefFoundError: org / jboss / util / file / ArchiveBrowser $ Filterв org.springframework.beans.BeanUtils.instantiateClass (BeanUtils.java:115) в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy.java:61) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean (AbstractAutowireCapableBeanFactory.java:877) ... еще 55 Вызвано: java.lang.NoClassDefFoundError: org / jboss / util / file / ArchiveBrowser $ Filter в org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory (HibernatePersistence.java:119) в javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:83) в javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:60) на com.app.service.UserServiceImpl. (UserServiceImpl.java:10) at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:532) в org.springframework.beans.BeanUtils.instantiateClass (BeanUtils.java:100) ... еще 57 Вызывается: java.lang.ClassNotFoundException: org.jboss.util.file.ArchiveBrowser $ Filter на java.net.URLClassLoader $ 1.run (URLClassLoader.java:217) at java.security.AccessController.doPrivileged (собственный метод) на java.net.URLClassLoader.findClass (URLClassLoader.java:205) в java.lang.ClassLoader.loadClass (ClassLoader.java:321) в org.codehaus.classworlds.RealmClassLoader.loadClassDirect (RealmClassLoader.java:195) в org.codehaus.classworlds.DefaultClassRealm.loadClass (DefaultClassRealm.java:255) в org.codehaus.classworlds.DefaultClassRealm.loadClass (DefaultClassRealm.java:274) в org.codehaus.classworlds.RealmClassLoader.loadClass (RealmClassLoader.java:214) в java.lang.ClassLoader.loadClass (ClassLoader.java:266) на org.mortbay.jetty.webapp.WebAppClassLoader.loadClass (WebAppClassLoader.java:401) на org.mortbay.jetty.webapp.WebAppClassLoader.loadClass (WebAppClassLoader.java:363) ... еще 66 2011-07-11 17: 49: 00.016 :: WARN: вложено в org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем 'userService', определенным в файле [/ home / ankur / Desktop / app / target / classes /applicationContext.xml]: не удалось создать экземпляр компонента; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр класса бина [com.app.service.UserServiceImpl]: конструктор вызвал исключение; Вложенным исключением является java.lang.NoClassDefFoundError: org / jboss / util / file / ArchiveBrowser $ Filter: java.lang.ClassNotFoundException: org.jboss.util.file.ArchiveBrowser $ Filter на java.net.URLClassLoader $ 1.run (URLClassLoader.java:217) at java.security.AccessController.doPrivileged (собственный метод) на java.net.URLClassLoader.findClass (URLClassLoader.java:205) в java.lang.ClassLoader.loadClass (ClassLoader.java:321) в org.codehaus.classworlds.RealmClassLoader.loadClassDirect (RealmClassLoader.java:195) в org.codehaus.classworlds.DefaultClassRealm.loadClass (DefaultClassRealm.java:255) в org.codehaus.classworlds.DefaultClassRealm.loadClass (DefaultClassRealm.java:274) в org.codehaus.classworlds.RealmClassLoader.loadClass (RealmClassLoader.java:214) в java.lang.ClassLoader.loadClass (ClassLoader.java:266) на org.mortbay.jetty.webapp.WebAppClassLoader.loadClass (WebAppClassLoader.java:401) на org.mortbay.jetty.webapp.WebAppClassLoader.loadClass (WebAppClassLoader.java:363) в org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory (HibernatePersistence.java:119) в javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:83) в javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:60) на com.app.service.UserServiceImpl. (UserServiceImpl.java:10)at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:532) в org.springframework.beans.BeanUtils.instantiateClass (BeanUtils.java:100) в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy.java:61) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean (AbstractAutowireCapableBeanFactory.java:877) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:839) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:440) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory $ 1.run (AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged (собственный метод) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:380) в org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:264) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:261) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:185) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:164) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:429) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:728) в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:380) в org.springframework.web.context.ContextLoader.createWebApplicationContext (ContextLoader.java:255) в org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:199) в org.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListen

Ответы [ 2 ]

1 голос
/ 11 июля 2011

Прежде всего вы пытаетесь подключить вашу БД через JPA,

1. Вы говорите, что пытаетесь подключиться через JPA-интерфейс персистентности, поэтому не должно быть никакого файла hbm, который вы указали в персистентности.XML-файл.

2.В классе обслуживания, который вы пытаетесь получить доступ к данным через entitymanager, вы не предоставили / не загрузили файл persistence.xml, из которого jpa загружает данные. Как я уже видел, вы написалиМетод getter / setter, так что вы используете Spring инъекцию, чтобы внедрить свойство entitymanager.

Так что я думаю, сначала посмотрите на часть JPA и протестируйте ее, а затем соедините ее со Struts2.Попробуйте эту строку, чтобы создать entitymanager.

 emf = Persistence.createEntityManagerFactory("MyJPAApplicationPU");
 em = emf.createEntityManager();

Здесь «MyJPAApplicationPU» - это имя единицы сохраняемости, которое определено в файле persistence.xml, а для вас - «APP».

0 голосов
/ 12 июля 2011

Хорошо, ankur, просто предоставьте свой XML-файл контекста приложения, На самом деле эта ошибка произошла, когда фабрика не смогла загрузить какой-либо идентификатор компонента в XML.

Одна вещь, которую я предлагаю вам, чтобы вы использовали внедрение интерфейса, поэтому в вашем UserServiceImpl вам нужно ввести свойство ссылки, которое требуется, это объект entitymanager

написали ли вы свое приложение в виде контекста

<bean
    class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

<bean id="userService" class="quickstart.service.UserServiceImpl" />

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="jpaVendorAdapter">
        <bean
            class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="database" value="MYSQL" />
            <property name="showSql" value="true" />
        </bean>
    </property>
</bean>

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/xyz" />
    <property name="username" value="root" />
    <property name="password" value="root" />
</bean>

<bean id="transactionManager"
    class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

2. Если да, то в вашем чеке ваш web.xml загрузчик контекста

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

3.и также используйте @ PersistenceContext

@PersistenceContext

public void setEntityManager (EntityManager em) {
this.em = em; }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...