Enrico,
Hi, if you run Tomcat from the Eclipse IDE (not as a service) any change to a web component like a servlet or an EJB session or entity bean will get picked up by the server pluggin and hot redeployed to the running Tomcat instance.
Recently tested on Eclipse 3.5 (32-bit) EE edition with shipped Tomcat 6 (for 6.0.20) server pluggin running EclipseLink 2.0 in the lib directory.
>upon modification of the front controller Servlet described in the tutorial at
thank you for your reply.
My case is not run Tomcat from the Eclipse IDE.
I have a Tomcat service on my remote Server and I deploy the .class when
I change and recompile my code. Every time I deploy a .class I have to
restart the Tomcat service.
The problem is that on that server other collegues works and it is a
problem to restart the service so often.
Do you know if there is any solution to solve this problem?
BR,
Enrico
Michael OBrien ha scritto:
> Enrico,
> Hi, if you run Tomcat from the Eclipse IDE (not as a service) any
> change to a web component like a servlet or an EJB session or entity
> bean will get picked up by the server pluggin and hot redeployed to the
> running Tomcat instance.
> Recently tested on Eclipse 3.5 (32-bit) EE edition with shipped Tomcat
> 6 (for 6.0.20) server pluggin running EclipseLink 2.0 in the lib directory.
>> upon modification of the front controller Servlet described in the
>> tutorial at
>
> http://wiki.eclipse.org/EclipseLink/Examples/JPA/Tomcat_Web_ Tutorial
>
> [EL Finest]: 2009-11-30
> 12:17:42.823--ServerSession(25919971)--Thread(Thread[Finaliz
> er,8,system])--End undeploying Persistence Unit statJPA; session
> file:/C:/wse/w35d/.metadata/.plugins/org.eclipse.wst.server.
> core/tmp1/wtpwebapps/UnifiedTomcatWeb/WEB-INF/classes/_statJ PA; state
> Undeployed; factoryCount 0
> 30-Nov-2009 12:18:25 PM org.apache.catalina.core.StandardContext reload
> INFO: Reloading this Context has started
>
>
> /thank you
> /michael
> http://www.eclipselink.org
>
Enrico,
If you don't use an IDE like Eclipse, NetBeans or JDeveloper then you will need to write your own ant task or maven script to hot redeploy.
Be aware there may be some file locking and/or administrator permission problems depending on how you launch a CMD window in some later versions of windows.
You can also drop your modified war into $CATALINA_BASE/webapps/ - however this requires a directory delete and restart.
You may use the management web app that ships with Tomcat which is like the console app on full application servers - I haven't used it for a while - refer to...
"Tomcat 6 includes a web application, deployed by default on context path /manager, that allows you to deploy and undeploy applications on a running Tomcat server without restarting it"
The how-to page above lists all the deployment scenarios.
> I have a Tomcat service on my remote Server and I deploy the .class when
> I change and recompile my code. Every time I deploy a .class I have to
> restart the Tomcat service.
You can also only restart a single web application instead of the whole service using Tomcat's management console.
Tomcat can also be configured to automatically reload a class when it is changed, but AFAIK this only works for the direct servlets and filters classes.
Both methods will result in a growing memory usage and you will need to restart the service after a number of times, because the old classes are often not removed from memory.
tbee ha scritto:
>> I have a Tomcat service on my remote Server and I deploy the .class
>> when I change and recompile my code. Every time I deploy a .class I
>> have to restart the Tomcat service.
>
> You can also only restart a single web application instead of the whole
> service using Tomcat's management console.
> Tomcat can also be configured to automatically reload a class when it is
> changed, but AFAIK this only works for the direct servlets and filters
> classes.
> Both methods will result in a growing memory usage and you will need to
> restart the service after a number of times, because the old classes are
> often not removed from memory.
I have no specific knowledge of Eclipselink under Tomcat (I'm using EL in a fat Swing client). But I know that Tomcat can restart single webapps and has a automatic reload feature (that must explicitly be enabled). This may or may not help with your problem.
Enrico wrote:
> Hi,
>
> thank you for your replies.
> But is it not strange that I have to restart the entire Tomcat every
> time I upload a change in my .class?
>
> I got for example the following error on Tomcat stack trace:
>
> GRAVE: null
> Local Exception Stack:
> Exception [EclipseLink-3001] (null - 1.1.1.v20090430-r4097):
> org.eclipse.persistence.exceptions.ConversionException
>
>
> BR,
> Enrico
Thank you for your reply.
Yes, my Tomcat restart the webapp and automatic try to relaod the
context, but every time I upload an update of my .class the following
exception occour (see below). Then I have to restart Tomcat and all works.
This happen only from when I started to use jap eclipselink...before the
tomcat reload worked fine. It must be due to something using eclipselink
inside tomcat..maybe I don't use the right way or maybe some
configuration in not fine.
Thank for your helps.
Enrico
GRAVE: null
Local Exception Stack:
Exception [EclipseLink-3001] (null - 1.1.1.v20090430-r4097):
org.eclipse.persistence.exceptions.ConversionException
Exception Description: The object [02/12/09 10.26], of class [class
java.util.Date], could not be converted to [class java.lang.String].
Internal Exception: java.lang.NullPointerException
at
org.eclipse.persistence.exceptions.ConversionException.could NotBeConverted(ConversionException.java:79)
at
org.eclipse.persistence.internal.helper.ConversionManager.co nvertObject(ConversionManager.java:151)
at
org.eclipse.persistence.logging.AbstractSessionLog.getDateSt ring(AbstractSessionLog.java:654)
at
org.eclipse.persistence.logging.AbstractSessionLog.getSupple mentDetailString(AbstractSessionLog.java:664)
at
org.eclipse.persistence.logging.DefaultSessionLog.log(Defaul tSessionLog.java:130)
at
org.eclipse.persistence.internal.sessions.AbstractSession.lo g(AbstractSession.java:2492)
at
org.eclipse.persistence.internal.sessions.AbstractSession.lo g(AbstractSession.java:3579)
at
org.eclipse.persistence.internal.sessions.AbstractSession.lo g(AbstractSession.java:3551)
at
org.eclipse.persistence.internal.sessions.AbstractSession.lo g(AbstractSession.java:3527)
at
org.eclipse.persistence.internal.sessions.AbstractSession.lo g(AbstractSession.java:3424)
at
org.eclipse.persistence.sessions.server.ServerSession.acquir eClientSession(ServerSession.java:387)
at
org.eclipse.persistence.internal.jpa.EntityManagerImpl.getAc tivePersistenceContext(EntityManagerImpl.java:1216)
at
org.eclipse.persistence.internal.jpa.EntityManagerImpl.getAc tiveSession(EntityManagerImpl.java:803)
at
org.eclipse.persistence.internal.jpa.EJBQueryImpl.getActiveS ession(EJBQueryImpl.java:1005)
at
org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeRea dQuery(EJBQueryImpl.java:372)
at
org.eclipse.persistence.internal.jpa.EJBQueryImpl.getSingleR esult(EJBQueryImpl.java:594)
at
it.opensite.registry.dao.RegistryDao.countAll(RegistryDao.ja va:20)
at
it.opensite.registry.business.RegistryManager.countRegistrie s(RegistryManager.java:460)
at
org.apache.jsp.cms.registry.index_jsp._jspService(index_jsp. java:522)
at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.ja va:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServl etWrapper.java:374)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServl et.java:342)
at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java :267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFi lter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(App licationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(Standar dWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(Standar dContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHo stValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo rtValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(Standard EngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd apter.java:286)
at
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler. java:190)
at
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.ja va:283)
at
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java :767)
at
org.apache.jk.common.ChannelSocket.processConnection(Channel Socket.java:697)
at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(Ch annelSocket.java:889)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru n(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
tbee ha scritto:
> I have no specific knowledge of Eclipselink under Tomcat (I'm using EL
> in a fat Swing client). But I know that Tomcat can restart single
> webapps and has a automatic reload feature (that must explicitly be
> enabled). This may or may not help with your problem.
>
>
> Enrico wrote:
>> Hi,
>>
>> thank you for your replies.
>> But is it not strange that I have to restart the entire Tomcat every
>> time I upload a change in my .class?
>>
>> I got for example the following error on Tomcat stack trace:
>>
>> GRAVE: null
>> Local Exception Stack:
>> Exception [EclipseLink-3001] (null - 1.1.1.v20090430-r4097):
>> org.eclipse.persistence.exceptions.ConversionException
>>
>>
>> BR,
>> Enrico
3-dic-2009 18.39.25 it.opensite.registry.helper.RegistryHelper entity2bean
AVVERTENZA: No Bean method related to Entity method: getRegistryParent
3-dic-2009 18.39.25 it.opensite.registry.helper.RegistryHelper entity2bean
AVVERTENZA: No Bean method related to Entity method: getRegistryChildList
3-dic-2009 18.39.25 it.opensite.registry.helper.RegistryHelper entity2bean
AVVERTENZA: No Bean method related to Entity method: getAgentList
3-dic-2009 18.39.25 it.opensite.registry.helper.RegistryHelper entity2bean
AVVERTENZA: No Bean method related to Entity method: getClass
*********FOUND REGISTRIES: BIANCHI VALERIANO
3-dic-2009 18.41.14 org.apache.catalina.core.StandardContext reload
INFO: Reloading this Context has started
3-dic-2009 18.41.14 it.opensite.registry.configuration.Configurator LoadXML
INFO: Loading Configuration from XML
file:/home/www/www.calendar.telnext.it/htdocs/WEB-INF/XML.xm l
3-dic-2009 18.41.14 it.opensite.registry.configuration.Configurator ParseDOM
INFO: Starting Parsing Configuration DOM
3-dic-2009 18.41.14 it.opensite.registry.configuration.Configurator LoadXML
INFO: Returning the Configuration Dataset
3-dic-2009 18.41.21 it.opensite.basedao.impl.BaseDaoImp findById
GRAVE: null
Local Exception Stack:
Exception [EclipseLink-3001] (null - 1.1.1.v20090430-r4097):
org.eclipse.persistence.exceptions.ConversionException
Exception Description: The object [03/12/09 18.41], of class [class
java.util.Date], could not be converted to [class java.lang.String].
Internal Exception: java.lang.NullPointerException
at
org.eclipse.persistence.exceptions.ConversionException.could NotBeConverted(ConversionException.java:79)
at
org.eclipse.persistence.internal.helper.ConversionManager.co nvertObject(ConversionManager.java:151)
at
org.eclipse.persistence.logging.AbstractSessionLog.getDateSt ring(AbstractSessionLog.java:654)
at
org.eclipse.persistence.logging.AbstractSessionLog.getSupple mentDetailString(AbstractSessionLog.java:664)
at
org.eclipse.persistence.logging.DefaultSessionLog.log(Defaul tSessionLog.java:130)
at
org.eclipse.persistence.internal.sessions.AbstractSession.lo g(AbstractSession.java:2492)
at
org.eclipse.persistence.internal.sessions.AbstractSession.lo g(AbstractSession.java:3579)
at
org.eclipse.persistence.internal.sessions.AbstractSession.lo g(AbstractSession.java:3551)
at
org.eclipse.persistence.internal.sessions.AbstractSession.lo g(AbstractSession.java:3527)
at
org.eclipse.persistence.internal.sessions.AbstractSession.lo g(AbstractSession.java:3424)
at
org.eclipse.persistence.sessions.server.ServerSession.acquir eClientSession(ServerSession.java:387)
at
org.eclipse.persistence.internal.jpa.EntityManagerImpl.getAc tivePersistenceContext(EntityManagerImpl.java:1216)
at
org.eclipse.persistence.internal.jpa.EntityManagerImpl.getAc tiveSession(EntityManagerImpl.java:803)
at
org.eclipse.persistence.internal.jpa.EntityManagerImpl.find( EntityManagerImpl.java:423)
at
org.eclipse.persistence.internal.jpa.EntityManagerImpl.find( EntityManagerImpl.java:336)
at it.opensite.basedao.impl.BaseDaoImp.findById(BaseDaoImp.java :113)
at it.opensite.basedao.impl.BaseDaoImp.load(BaseDaoImp.java:93)
at
it.opensite.calendar.extensions.elitel.ElitelManager.loadEli telEvent(ElitelManager.java:311)
at
org.apache.jsp.cms.calendar.extensions.eliteltask_jsp._jspSe rvice(eliteltask_jsp.java:87)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.ja va:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServl etWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServl et.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java :267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFi lter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(App licationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(Standar dWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(Standar dContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHo stValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo rtValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(Standard EngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd apter.java:286)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler. java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.ja va:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java :767)
at
org.apache.jk.common.ChannelSocket.processConnection(Channel Socket.java:697)
at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(Ch annelSocket.java:889)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru n(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
at
org.eclipse.persistence.internal.helper.Helper.allocateCalen dar(Helper.java:118)
at
org.eclipse.persistence.internal.helper.Helper.printTimestam p(Helper.java:1594)
at
org.eclipse.persistence.internal.helper.ConversionManager.co nvertObjectToString(ConversionManager.java:643)
at
org.eclipse.persistence.internal.helper.ConversionManager.co nvertObject(ConversionManager.java:104)
... 38 more
3-dic-2009 18.41.21 it.opensite.calendar.extensions.elitel.ElitelManager
loadElitelEvent
GRAVE: null
javax.persistence.EntityNotFoundException: entity class
it.opensite.calendar.extensions.elitel.ElitelEventEntity#267 was not found
at it.opensite.basedao.impl.BaseDaoImp.load(BaseDaoImp.java:96)
at
it.opensite.calendar.extensions.elitel.ElitelManager.loadEli telEvent(ElitelManager.java:311)
at
org.apache.jsp.cms.calendar.extensions.eliteltask_jsp._jspSe rvice(eliteltask_jsp.java:87)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.ja va:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServl etWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServl et.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java :267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFi lter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(App licationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(Standar dWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(Standar dContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHo stValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo rtValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(Standard EngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd apter.java:286)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler. java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.ja va:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java :767)
at
org.apache.jk.common.ChannelSocket.processConnection(Channel Socket.java:697)
at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(Ch annelSocket.java:889)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru n(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)
3-dic-2009 18.41.21 it.opensite.calendar.extensions.elitel.ElitelManager
loadEvent
GRAVE: null
java.lang.NullPointerException
at
it.opensite.calendar.extensions.elitel.ElitelManager.loadEve nt(ElitelManager.java:325)
at
org.apache.jsp.cms.calendar.extensions.eliteltask_jsp._jspSe rvice(eliteltask_jsp.java:88)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.ja va:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServl etWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServl et.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java :267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFi lter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(App licationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(Standar dWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(Standar dContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHo stValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo rtValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(Standard EngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd apter.java:286)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler. java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.ja va:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java :767)
at
org.apache.jk.common.ChannelSocket.processConnection(Channel Socket.java:697)
at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(Ch annelSocket.java:889)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru n(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)
3-dic-2009 18.41.21 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at
org.apache.jsp.cms.calendar.extensions.eliteltask_jsp._jspSe rvice(eliteltask_jsp.java:89)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.ja va:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServl etWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServl et.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java :267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFi lter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(App licationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(Standar dWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(Standar dContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHo stValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo rtValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(Standard EngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd apter.java:286)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler. java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.ja va:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java :767)
at
org.apache.jk.common.ChannelSocket.processConnection(Channel Socket.java:697)
at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(Ch annelSocket.java:889)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru n(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)
James ha scritto:
> Could you include the full stack trace to the "caused by" null-pointer?
>
James Sutherland Messages: 1939 Registered: July 2009 Location: Ottawa, Canada
Senior Member
The specific null-pointer is caused because the Helper class seems to have somehow failed to be initialized.
Calling,
Helper.initCalendarCache();
would fix the specific issue, but it is most likely a symptom of a much bigger issue if Tomcat is not initializing class correctly. You may want to review your Tomcat documentation, or ensure you have the latest version, or are deploying your classes correctly.