Fehler mit PersistanceUnit

Slacki

Mitglied
Hallo Leute,

versuch mich gerade in Sip-Servlets einzuarbeiten und bin dabei auf Problem gestossen
was glaub ich weniger mit dem Sip zu tun hat.

Ich arbeite mit einigens Samples und TuDo's.
Wenn ich versuche daraus etwas zu mixen tritt in folgender
Zeile folgender Stack-Trace auf.

Code:
@PersistenceUnit(unitName = "EricssonSipPU")
    private EntityManagerFactory emf;

[#|2010-04-30T21:52:45.375+0200|SEVERE|sun-glassfish-comms-server2.0|javax.enterprise.system.container.web|_ThreadID=112;_ThreadName=Thread-28544;_RequestID=e3968660-a489-4bb9-9e35-99191ec5a1ae;|WEB0123: Webmodul [Sip-Samp] wurde nicht bereitgestellt und wurde deaktiviert.
java.lang.RuntimeException: java.lang.RuntimeException: Eine dem persistence-unit-ref-name [sip.EchoServlet/emf] entsprechende Fortdauereinheit im Bereich des Moduls mit dem Namen [Sip-Samp] konnte nicht aufgelöst werden. Überprüfen Sie Ihre Anwendung.
at com.sun.enterprise.web.WebModuleListener.loadPersistenceUnits(WebModuleListener.java:193)
at com.sun.enterprise.web.WebModuleListener.lifecycleEvent(WebModuleListener.java:168)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:159)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5276)
at com.sun.enterprise.web.WebModule.start(WebModule.java:345)
at com.ericsson.ssa.config.ConvergedContextImpl.start(ConvergedContextImpl.java:144)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:986)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:970)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:704)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1649)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1254)
at com.sun.enterprise.server.WebArchiveLoader.loadWebModule(WebArchiveLoader.java:131)
at org.jvnet.glassfish.comms.deployment.backend.SipArchiveLoader.load(SipArchiveLoader.java:102)
at org.jvnet.glassfish.comms.deployment.backend.SipArchiveLoader.load(SipArchiveLoader.java:113)
at com.sun.enterprise.server.ExtensionModuleLoader.doLoad(ExtensionModuleLoader.java:151)
at com.sun.enterprise.server.ExtensionModuleManager.moduleDeployed(ExtensionModuleManager.java:181)
at com.sun.enterprise.server.ExtensionModuleManager.moduleDeployed(ExtensionModuleManager.java:379)
at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEventListener(AdminEventMulticaster.java:1005)
at com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEvent(AdminEventMulticaster.java:992)
at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:470)
at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:182)
at com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastEvent(DeploymentNotificationHelper.java:308)
at com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(DeploymentServiceUtils.java:231)
at com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent(ServerDeploymentTarget.java:298)
at com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(ApplicationStartPhase.java:132)
at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108)
at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:966)
at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:609)
at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:653)
at com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start(ApplicationsConfigMBean.java:773)
at sun.reflect.GeneratedMethodAccessor771.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:390)
at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:373)
at com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:477)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90)
at $Proxy1.invoke(Unknown Source)
at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304)
at com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:170)
at com.sun.enterprise.deployment.client.DeploymentClientUtils.startApplication(DeploymentClientUtils.java:159)
at com.sun.enterprise.deployment.client.DeployAction.run(DeployAction.java:538)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.RuntimeException: Eine dem persistence-unit-ref-name [sip.EchoServlet/emf] entsprechende Fortdauereinheit im Bereich des Moduls mit dem Namen [Sip-Samp] konnte nicht aufgelöst werden. Überprüfen Sie Ihre Anwendung.
at com.sun.enterprise.deployment.BundleDescriptor.findReferencedPUsViaPURefs(BundleDescriptor.java:711)
at com.sun.enterprise.deployment.WebBundleDescriptor.findReferencedPUs(WebBundleDescriptor.java:727)
at com.sun.enterprise.web.WebModuleListener$ApplicationInfoImpl.getReferencedPUs(WebModuleListener.java:253)
at com.sun.enterprise.server.PersistenceUnitLoaderImpl.load(PersistenceUnitLoaderImpl.java:83)
at com.sun.enterprise.web.WebModuleListener.loadPersistenceUnits(WebModuleListener.java:190)
... 47 more


Kann mir jemand sagen wo mein Fehler liegt. Auch hilfreich währe was zum Lesen über diese
'@' und Persistance usw.. :)

vielen Dank
 
hier die xml:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="EricssonSipPU" transaction-type="JTA">
    <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
    <jta-data-source>jdbc/__default</jta-data-source>
    <properties>
      <property name="toplink.ddl-generation" value="drop-and-create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

Ich muss dazu sagen das es das erste mal ist das ich mit PersistanceUnit arbeite.
Warscheinlich überseh ich das wichtigste oder elementarste.

mfg
 
ah, ok

das injizieren der Persistence Unit in das Servlet greift in die Grütze.

Du brauchst eigentlich sowas wie eine passende Resource-Ref in der web.xml. Da ich aber innerhalb von Servlet i.d.R. immer erst an EJBs delegiere und keine PU direkt anspreche, kann ich Dir wohl nicht helfen.

Als Workaround empfiehlt es sich, erstmal auf ein SLSB zu referenzieren, wo dann der Zugriff gemacht wird. Das funktioniert definitiv.

Grüße
gore
 
hallo gore,

danke für die antwort.
wie schon gesagt, ich bin da noch rel. anfänger. ausser web-servlets hab ich noch nicht viel gemacht.

könntest du mir deinen letzten satz (den workarround) etwas genauer erklären ?

mfg
 
hi,

im großen und ganzen heisst das, dass du ein Stateless Session Bean machst, dieses in den deployment descriptoren referenzierst und dann vom servlet aus ansprichst (entweder bean holen via initial context oder - geht zumindestens im jboss - per @EJB annotation)

deine persistence unit wiederum holst du dir im ejb selbst per resource annotation oder per @EntityManager.

grüße
gore
 

Neue Beiträge

Zurück