2012-06-02 15 views
7

Mi chiedo quale sia il contenitore servlet in Glassfish. In alcune fonti ho visto che Glassfish utilizza qualcosa come Grizzly, ma Grizzly è un framework web:Contenitore servlet per glassfish v2

Il Grizzly NIO e framework Web è stato progettato per aiutare gli sviluppatori di trarre vantaggio delle API Java ™ NIO. L'obiettivo di Grizzly è aiutare gli sviluppatori a creare server scalabili e robusti utilizzando NIO e offriamo anche componenti framework estesi: Web Framework (HTTP/S), Bayeux Protocol, Servlet, HttpService OSGi e Comet.

Che cosa significa? Glassfish usa Grizzly come contenitore web. O forse Tomcat e Grizzly come un'estensione?

risposta

6

Grizzly è il connettore HTTP. Glassfish utilizza un fork del motore Tomcat (Catalina) come contenitore servlet. Una prova semplice è la verifica dello stacktrace quando si verifica qualche eccezione nel codice aziendale. Vedrai org.apache.catalina.* in fondo alla traccia, tra le linee com.sun.grizzly.* e le righe del tuo codice aziendale. E 'in genere simile a questa:

... 
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 
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.invoke(StandardPipeline.java:595) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) 
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849) 
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) 
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) 
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228) 
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) 

Glassfish non è l'unico che usa Catalina tra l'altro, JBoss AS e IBM WebSphere anche usarlo.

+0

JBoss può anche utilizzare Jetty. WebSphere Application Server (non CE = Geronimo) non ha accordi con Tomcat. – chro

Problemi correlati