Проблема с развертыванием war в glassfish

#netbeans #glassfish #web-deployment

#netbeans #glassfish #веб-развертывание

Вопрос:

когда я хочу развернуть свое веб-приложение (я делаю это с помощью netbeans) в glassfish, у меня возникает эта ошибка

Во время развертывания произошла ошибка: Исключение при подготовке приложения: Недопустимый ресурс: tun__pm. Пожалуйста, смотрите server.log для получения более подробной информации

Приложение представляет собой веб-службу RESTful, когда я его тестирую, netbeans развертывает его, и оно работает нормально. Но когда я взял .файл war и я хочу его развернуть, у меня ошибка.

это журнал:

 > [#|2011-04-30T19:50:05.229 0100|SEVERE|glassfish3.1|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=84;_ThreadName=Thread-3;|Invalid
> resource : tun__pm
> java.lang.RuntimeException: Invalid
> resource : tun__pm    at
> com.sun.enterprise.connectors.ConnectorRuntime.lookupDataSourceInDAS(ConnectorRuntime.java:539)
>   at
> com.sun.enterprise.connectors.ConnectorRuntime.lookupPMResource(ConnectorRuntime.java:468)
>   at
> org.glassfish.persistence.common.PersistenceHelper.lookupPMResource(PersistenceHelper.java:63)
>   at
> org.glassfish.persistence.jpa.ProviderContainerContractInfoBase.lookupDataSource(ProviderContainerContractInfoBase.java:71)
>   at
> org.glassfish.persistence.jpa.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:108)
>   at
> org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:154)
>   at
> org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:119)
>   at
> org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:213)
>   at
> org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:486)
>   at
> org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:220)
>   at
> org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:166)
>   at
> com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:870)
>   at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
>   at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
>   at
> org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1067)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
>   at
> org.glassfish.admingui.common.util.LocalDeploymentFacility$LocalDFCommandRunner.run(LocalDeploymentFacility.java:143)
>   at
> org.glassfish.deployment.client.AbstractDeploymentFacility.deploy(AbstractDeploymentFacility.java:406)
>   at
> org.glassfish.admingui.common.util.DeployUtil.invokeDeploymentFacility(DeployUtil.java:100)
>   at
> org.glassfish.admingui.common.util.DeployUtil.deploy(DeployUtil.java:76)
>   at
> org.glassfish.admingui.common.handlers.DeploymentHandler.deploy(DeploymentHandler.java:191)
>   at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)   at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>   at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>   at
> java.lang.reflect.Method.invoke(Method.java:597)
>   at
> com.sun.jsftemplating.layout.descriptors.handler.Handler.invoke(Handler.java:442)
>   at
> com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:420)
>   at
> com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:394)
>   at
> com.sun.jsftemplating.layout.event.CommandActionListener.invokeCommandHandlers(CommandActionListener.java:150)
>   at
> com.sun.jsftemplating.layout.event.CommandActionListener.processAction(CommandActionListener.java:98)
>   at
> javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
>   at
> javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
>   at
> javax.faces.component.UICommand.broadcast(UICommand.java:300)
>   at
> com.sun.webui.jsf.component.WebuiCommand.broadcast(WebuiCommand.java:166)
>   at
> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
>   at
> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
>   at
> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
>   at
> com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
>   at
> com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
>   at
> javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
>   at
> org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
>   at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
>   at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
>   at
> com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:223)
>   at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
>   at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
>   at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
>   at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>   at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
>   at
> org.apache.catalina.core.StandardPipeline.doChainInvoke(StandardPipeline.java:600)
>   at
> com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:96)
>   at
> com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
>   at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
>   at
> org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
>   at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
>   at
> com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:228)
>   at
> com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
>   at
> com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
>   at
> com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
>   at
> com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
>   at
> com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
>   at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
>   at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
>   at
> com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
>   at
> com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
>   at
> com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
>   at
> com.sun.grizzly.ContextTask.run(ContextTask.java:71)
>   at
> com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
>   at
> com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
>   at
> java.lang.Thread.run(Thread.java:680)
> Caused by:
> com.sun.appserv.connectors.internal.api.ConnectorRuntimeException:
> Invalid resource : tun__pm    at
> com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl$MyDataSource.validateResource(ConnectorResourceAdminServiceImpl.java:272)
>   at
> com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl$MyDataSource.setResourceInfo(ConnectorResourceAdminServiceImpl.java:253)
>   at
> com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl.lookupDataSourceInDAS(ConnectorResourceAdminServiceImpl.java:243)
>   at
> com.sun.enterprise.connectors.ConnectorRuntime.lookupDataSourceInDAS(ConnectorRuntime.java:537)
>   ... 74 more |#]
> 
> [#|2011-04-30T19:50:05.238 0100|SEVERE|glassfish3.1|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=84;_ThreadName=Thread-3;|Exception
> while preparing the app : Invalid
> resource : tun__pm
> com.sun.appserv.connectors.internal.api.ConnectorRuntimeException:
> Invalid resource : tun__pm    at
> com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl$MyDataSource.validateResource(ConnectorResourceAdminServiceImpl.java:272)
>   at
> com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl$MyDataSource.setResourceInfo(ConnectorResourceAdminServiceImpl.java:253)
>   at
> com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl.lookupDataSourceInDAS(ConnectorResourceAdminServiceImpl.java:243)
>   at
> com.sun.enterprise.connectors.ConnectorRuntime.lookupDataSourceInDAS(ConnectorRuntime.java:537)
>   at
> com.sun.enterprise.connectors.ConnectorRuntime.lookupPMResource(ConnectorRuntime.java:468)
>   at
> org.glassfish.persistence.common.PersistenceHelper.lookupPMResource(PersistenceHelper.java:63)
>   at
> org.glassfish.persistence.jpa.ProviderContainerContractInfoBase.lookupDataSource(ProviderContainerContractInfoBase.java:71)
>   at
> org.glassfish.persistence.jpa.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:108)
>   at
> org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:154)
>   at
> org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:119)
>   at
> org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:213)
>   at
> org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:486)
>   at
> org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:220)
>   at
> org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:166)
>   at
> com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:870)
>   at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
>   at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
>   at
> org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1067)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247)
>   at
> com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
>   at
> org.glassfish.admingui.common.util.LocalDeploymentFacility$LocalDFCommandRunner.run(LocalDeploymentFacility.java:143)
>   at
> org.glassfish.deployment.client.AbstractDeploymentFacility.deploy(AbstractDeploymentFacility.java:406)
>   at
> org.glassfish.admingui.common.util.DeployUtil.invokeDeploymentFacility(DeployUtil.java:100)
>   at
> org.glassfish.admingui.common.util.DeployUtil.deploy(DeployUtil.java:76)
>   at
> org.glassfish.admingui.common.handlers.DeploymentHandler.deploy(DeploymentHandler.java:191)
>   at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)   at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>   at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>   at
> java.lang.reflect.Method.invoke(Method.java:597)
>   at
> com.sun.jsftemplating.layout.descriptors.handler.Handler.invoke(Handler.java:442)
>   at
> com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:420)
>   at
> com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:394)
>   at
> com.sun.jsftemplating.layout.event.CommandActionListener.invokeCommandHandlers(CommandActionListener.java:150)
>   at
> com.sun.jsftemplating.layout.event.CommandActionListener.processAction(CommandActionListener.java:98)
>   at
> javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
>   at
> javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
>   at
> javax.faces.component.UICommand.broadcast(UICommand.java:300)
>   at
> com.sun.webui.jsf.component.WebuiCommand.broadcast(WebuiCommand.java:166)
>   at
> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
>   at
> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
>   at
> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
>   at
> com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
>   at
> com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
>   at
> javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
>   at
> org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
>   at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
>   at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
>   at
> com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:223)
>   at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
>   at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
>   at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
>   at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>   at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
>   at
> org.apache.catalina.core.StandardPipeline.doChainInvoke(StandardPipeline.java:600)
>   at
> com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:96)
>   at
> com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
>   at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
>   at
> org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
>   at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
>   at
> com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:228)
>   at
> com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
>   at
> com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
>   at
> com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
>   at
> com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
>   at
> com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
>   at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
>   at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
>   at
> com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
>   at
> com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
>   at
> com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
>   at
> com.sun.grizzly.ContextTask.run(ContextTask.java:71)
>   at
> com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
>   at
> com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
>   at
> java.lang.Thread.run(Thread.java:680)
  

я не знаю, что такое tun__pm но tun — это имя подключения к базе данных в netbeans.Должен ли я что-то сделать в glassfish для подключения к базе данных? mysql работает..

Ответ №1:

У меня была такая же проблема. Но в любом случае, был установлен netbeans, который также устанавливает glassfish вместе с ним, если вы выберете этот параметр при установке. На вкладке сервисы, если щелкнуть правой кнопкой мыши на сервере Glassfish, свойства, папка домена: C:Users\{username}\.netbeans7.1configGF3 и не C:Program Filesglassfish-3.1.1glassfishdomainsdomain1

Итак, если вы запустите экземпляр домена по умолчанию в netbeans и создадите какие-либо источники данных, они фактически сохранят пул соединений и информацию об источнике данных в domain.xml в C:Users\{username}\.netbeans7.1configGF3domain1configdomain.xml .

Итак, решение таково: либо скопировать

  <jdbc-connection-pool name="tunPool">...</jdbc-connection-pool>
 <jdbc-resource pool-name="tunPool" jndi-name="jdbc/tun"></jdbc-resource>
  

с вашего C:Users\{username}\.netbeans7.1configGF3domain1configdomain.xml на

 C:Program Filesglassfish-3.1.1glassfishdomainsdomain1config
  

или

добавьте ваш экземпляр домена glassfish на вкладку services в netbeans и создайте свой источник данных, используя его (в ОС Windows, перед добавлением domain1 в netbeans, щелкните правой кнопкой мыши на netbeans и выберите «Запуск от имени администратора» для его открытия, иначе netbeans не сможет обнаружить присутствие domain1)

Комментарии:

1. Я пытался использовать пул образцов derby jdbc/sample … и я не видел этого на domain.xml , но я вижу jdbc/__default , что по сути это одно и то же. итак, я изменил, и у меня работает.

Ответ №2:

Похоже, вам нужно создать ресурс JDBC в glassfish с именем JNDI «tun_pm». Это должно устранить вашу ошибку поиска.

Комментарии:

1. Я бы рекомендовал открыть консоль администратора glassfish и просмотреть, какие ресурсы были предоставлены через JNDI, и посмотреть, есть ли в списке tun_pm. Возможно, что вместо того, чтобы называться «tun_pm», он может быть представлен под другим именем.

2. Какого черта GlassFish искажает имена ресурсов, объявленных в glassfish-resource.xml в любом случае?

Ответ №3:

У меня возникла похожая проблема при разработке с использованием NetBeans 7.1.2 и Glassfish, я не знаю почему, но источник данных и связанная с ним служба базы данных, которую я использовал, время от времени исчезают, поэтому при развертывании отображается следующая ошибка:

Grave: Exception while preparing the app : Invalid resource : whateverDBcon__pm
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Invalid resource : whateverDBcon__pm

Решение NetBeans 7.1.2: Возможно, это не профессиональный способ, но я только что создал тот же источник данных: Configuration Files/persistence.xml используя мастер, который вы можете найти в представлении «Дизайн». Просто используйте то же имя JNDI, что и старое, и оно создаст необходимую вам службу JDBC.

у cmutt78 был ключ, спасибо!