tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rémy Maucherat <r...@apache.org>
Subject Re: Start embedded Tomcat 9.0.1 server from java code
Date Wed, 08 Nov 2017 06:49:06 GMT
On Wed, Nov 8, 2017 at 5:30 AM, Maxim Solodovnik <solomax666@gmail.com>
wrote:

> OK :)
> I finally found the difference :)))
>
> Tomcat.java 8.5.23:
>     public void start() throws LifecycleException {
>         getServer();
>         getConnector();
>         server.start();
>     }
>
> Tomcat.java 9.0.1:
>     public void start() throws LifecycleException {
>         getServer();
>         server.start();
>     }
>
> This is why Tomcat 9.0.2 has no connectors ....
> Is it bug or feature?
>

The automatic connector creation, among other tings, was conflicting with
other more sophisticated uses so it was refactored. It was not possible to
start Tomcat without a connector so that capability was added in Tomcat 9.
If you want to get a default connector, you have to call getConnector
yourself.
BZ60297, BZ60368, then a Tomcat 9 specific change.

Rémy

>
>
> On Wed, Nov 8, 2017 at 12:07 AM, Tobias Soloschenko <
> tobiassoloschenko@googlemail.com> wrote:
>
> > Hi Maxim,
> >
> > same for me I just created a simple setup like this:
> >
> >         String baseDir =".";
> >         String webappDirLocation = "src/main/webapp/";
> >         String webxmlDirLocation = "src/main/webapp/WEB-INF/web.xml";
> >         Tomcat tomcat = new Tomcat();
> >         tomcat.setPort(8080);
> >         tomcat.setBaseDir(baseDir);
> >         tomcat.getHost().setAppBase(baseDir);
> >         tomcat.getHost().setDeployOnStartup(true);
> >         tomcat.getHost().setAutoDeploy(true);
> >         tomcat.enableNaming();
> >         StandardContext ctx = (StandardContext)
> > tomcat.addWebapp("/project", new File(webappDirLocation).
> > getAbsolutePath());
> >         File additionWebInfClasses = new File("target/classes");
> >         WebResourceRoot resources = new StandardRoot(ctx);
> >         resources.addPreResources(new DirResourceSet(resources,
> > "/WEB-INF/classes",
> >                 additionWebInfClasses.getAbsolutePath(), "/"));
> >         ctx.setResources(resources);
> >         ctx.setDefaultWebXml(new File(webxmlDirLocation).
> > getAbsolutePath());
> >         tomcat.start();
> >         tomcat.getServer().await();
> >
> > I just placed in a Servlet into my classpath and applied the mapping in
> > the web.xml - with the dependencies of tomcat-embed-core and
> > tomcat-embed-jasper of version 9.0.1 it is not working and with 8.5.23 it
> > does.
> >
> > Here is the log of both.
> >
> > 8.5.23
> >
> > Nov. 07, 2017 6:02:44 NACHM. org.apache.coyote.AbstractProtocol init
> > INFORMATION: Initializing ProtocolHandler ["http-nio-8080"]
> > Nov. 07, 2017 6:02:44 NACHM. org.apache.tomcat.util.net.NioSelectorPool
> > getSharedSelector
> > INFORMATION: Using a shared selector for servlet write/read
> > Nov. 07, 2017 6:02:44 NACHM. org.apache.catalina.core.StandardService
> > startInternal
> > INFORMATION: Starting service [Tomcat]
> > Nov. 07, 2017 6:02:44 NACHM. org.apache.catalina.core.StandardEngine
> > startInternal
> > INFORMATION: Starting Servlet Engine: Apache Tomcat/8.5.23
> > Nov. 07, 2017 6:02:44 NACHM. org.apache.catalina.startup.ContextConfig
> > getDefaultWebXmlFragment
> > INFORMATION: No global web.xml found
> > Nov. 07, 2017 6:02:45 NACHM. org.apache.coyote.AbstractProtocol start
> > INFORMATION: Starting ProtocolHandler ["http-nio-8080“]
> >
> > 9.0.1
> >
> > Nov. 07, 2017 6:06:56 NACHM. org.apache.catalina.core.StandardService
> > startInternal
> > INFORMATION: Starting service [Tomcat]
> > Nov. 07, 2017 6:06:56 NACHM. org.apache.catalina.core.StandardEngine
> > startInternal
> > INFORMATION: Starting Servlet Engine: Apache Tomcat/9.0.1
> > Nov. 07, 2017 6:06:56 NACHM. org.apache.catalina.startup.ContextConfig
> > getDefaultWebXmlFragment
> > INFORMATION: No global web.xml found
> >
> > kind regards
> >
> > Tobias
> >
> > > Am 07.11.2017 um 15:56 schrieb Maxim Solodovnik <solomax666@gmail.com
> >:
> > >
> > > Thanks for the hints :)
> > >
> > > I have created sample project: https://github.com/solomax/
> > tomcat-from-java
> > >
> > > I have compared detailed logs.
> > >
> > > Following lines appears in logs while Tomcat8 is used
> > >         Nov 07, 2017 9:1 PM org.apache.catalina.util.LifecycleBase
> > > setStateInternal
> > >         FINE: Setting state for [Connector[HTTP/1.1-8080]] to
> > > [INITIALIZING]
> > >         Nov 07, 2017 9:1 PM org.apache.tomcat.util.modeler.Registry
> > > registerComponent
> > >         FINE: Managed= Tomcat:type=Connector,port=8080
> > >
> > > These lines are missing while Tomcat9 is used
> > >
> > > Maybe you can tell me why?
> > >
> > > On Mon, Nov 6, 2017 at 7:55 PM, Mark Thomas <markt@apache.org> wrote:
> > >
> > >> On 04/11/17 15:25, Maxim Solodovnik wrote:
> > >>> Maybe I can set breakpoint somewhere? and check what is wrong?
> > >>> Could you point me to the correct class?
> > >>
> > >> No idea where to look at this point. I'd probably start with the
> start()
> > >> method and go from there.
> > >>
> > >> Maybe try turning on debug logging?
> > >>
> > >> Mark
> > >>
> > >>
> > >>>
> > >>> On Fri, Nov 3, 2017 at 5:26 PM, Maxim Solodovnik <
> solomax666@gmail.com
> > >
> > >>> wrote:
> > >>>
> > >>>> I'm OK to add missing code to my tests,
> > >>>> but I'm not sure what need to be added :(
> > >>>>
> > >>>> On Fri, Nov 3, 2017 at 3:24 PM, Maxim Solodovnik <
> > solomax666@gmail.com>
> > >>>> wrote:
> > >>>>
> > >>>>> I see no errors,
> > >>>>> Using debugger I can see tomcat.server.state == STARTED
> > >>>>>
> > >>>>> Everything works as expected if I'm switching back to 8.5.23
> without
> > >> any
> > >>>>> other changes
> > >>>>>
> > >>>>> nestat reports:
> > >>>>> *netstat -an |grep 8080*
> > >>>>> tcp6       0      0 :::8080                 :::*
> > >>>>> LISTEN
> > >>>>>
> > >>>>> for 8.5.23
> > >>>>>
> > >>>>>
> > >>>>> On Fri, Nov 3, 2017 at 3:08 PM, Mark Thomas <markt@apache.org>
> > wrote:
> > >>>>>
> > >>>>>> On 03/11/17 04:51, Maxim Solodovnik wrote:
> > >>>>>>> Hello,
> > >>>>>>>
> > >>>>>>> I recently migrated from Tomcat 8.5.23 to Tomcat 9.0.1
> > >>>>>>> Everything works as expected except tests :(
> > >>>>>>>
> > >>>>>>> I'm using following code to start embedded Tomcat and
test CXF
> web
> > >>>>>> services [1].
> > >>>>>>> With Tomcat 9.0.1 tests failed, netstat -an displays
port 8080 is
> > not
> > >>>>>>> being listened
> > >>>>>>> What need to be changed?
> > >>>>>>
> > >>>>>> If Tomcat isn't listening then there should be an exception
or
> error
> > >>>>>> message reported at some point. Do you see anything in
the logs?
> > >>>>>>
> > >>>>>> Mark
> > >>>>>>
> > >>>>>>
> > >>>>>>>
> > >>>>>>>
> > >>>>>>> [1] https://github.com/apache/openmeetings/blob/master/openmeeti
> > >>>>>> ngs-web/src/test/java/org/apache/openmeetings/webservice/
> > >>>>>> AbstractWebServiceTest.java#L98
> > >>>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>> ------------------------------------------------------------
> > ---------
> > >>>>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> > >>>>>> For additional commands, e-mail: users-help@tomcat.apache.org
> > >>>>>>
> > >>>>>>
> > >>>>>
> > >>>>>
> > >>>>> --
> > >>>>> WBR
> > >>>>> Maxim aka solomax
> > >>>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>> --
> > >>>> WBR
> > >>>> Maxim aka solomax
> > >>>>
> > >>>
> > >>>
> > >>>
> > >>
> > >>
> > >> ---------------------------------------------------------------------
> > >> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> > >> For additional commands, e-mail: users-help@tomcat.apache.org
> > >>
> > >>
> > >
> > >
> > > --
> > > WBR
> > > Maxim aka solomax
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> > For additional commands, e-mail: users-help@tomcat.apache.org
> >
> >
>
>
> --
> WBR
> Maxim aka solomax
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message