2012-06-02 30 views
7

Tôi tự hỏi container servlet trong Glassfish là gì. Trong một số nguồn tin, tôi thấy rằng Glassfish sử dụng một cái gì đó giống như Grizzly, nhưng Grizzly là một khuôn khổ web:Glassfish v3 servlet container

Các Grizzly nio và khung Web đã được thiết kế để giúp các nhà phát triển để tận dụng lợi thế của API Java ™ nio. Mục tiêu của Grizzly là giúp các nhà phát triển xây dựng các máy chủ có khả năng mở rộng và mạnh mẽ sử dụng NIO và chúng tôi cũng cung cấp các thành phần khung mở rộng: Web Framework (HTTP/S), Giao thức Bayeux, Servlet, HttpService OSGi và Comet.

Điều đó có nghĩa là gì? Glassfish có sử dụng Grizzly làm web container hay không. Hoặc có thể Tomcat, và Grizzly như là một phần mở rộng?

Trả lời

6

Grizzly là trình kết nối HTTP. Glassfish sử dụng một nhánh của động cơ Tomcat (Catalina) làm thùng chứa servlet. Một bằng chứng dễ dàng là kiểm tra stacktrace khi một số ngoại lệ xảy ra trong mã kinh doanh của bạn. Bạn sẽ thấy chi tiết org.apache.catalina.* sâu trong theo dõi, giữa các dòng com.sun.grizzly.* và các dòng mã doanh nghiệp của riêng bạn. Nó thường trông giống như sau:

... 
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 không phải là người duy nhất sử dụng Catalina bằng cách này, JBoss AS và IBM WebSphere cũng sử dụng nó.

+0

JBoss cũng có thể sử dụng Cầu tàu. Máy chủ ứng dụng WebSphere (không phải CE = Geronimo) không có giao dịch với Tomcat. – chro