Hi, Glen

See my comments inline.

Thanks
Jeff

Glen Mazza wrote:
Am Dienstag, den 09.10.2007, 09:29 +0000 schrieb [EMAIL PROTECTED]:

Author: ningjiang
Date: Tue Oct  9 02:29:43 2007
New Revision: 583087
Added: 
incubator/cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/cxf/WorkManagerThreadPool.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/cxf/WorkManagerThreadPool.java?rev=583087&view=auto
==============================================================================
--- 
incubator/cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/cxf/WorkManagerThreadPool.java
 (added)
+++ 
incubator/cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/cxf/WorkManagerThreadPool.java
 Tue Oct  9 02:29:43 2007
+ + public void setIsLowOnThreads(boolean isLow) {
+        this.isLowOnThreads = isLow;
+    }
+

I'm unsure about the business logic--but should we actually have such a public method like this? Wouldn't it be the role of the WorkManagerThreadPool itself to determine whether or not it is low on threads?

Here is the logic, firstly I am assuming the lowOnThreads is false, and then we might got the "START_TIMEOUT" error. If we got this error, we know the lowOnThreads is true, so we will set the lowOnThreads true, and retry it again. The WorkManagerThreadPool is actually just a adapter, it is the Application server take charges of Thread Pool. But the JCA 1.5 specification doesn't have this isLowOnThreads() API, so we can't this directly from the Application Server.

URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/servant/EJBEndpoint.java?rev=583087&r1=583086&r2=583087&view=diff
==============================================================================
--- 
incubator/cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/servant/EJBEndpoint.java
 (original)
+++ 
incubator/cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/servant/EJBEndpoint.java
 Tue Oct  9 02:29:43 2007

     public String getServiceClassName() throws Exception {
@@ -95,6 +130,18 @@
         return "http://"; + hostName + ":9999";
     }

Just to confirm, the port # is *not* configurable, correct?  (i.e., it
will always be 9999 so no more logic is needed here?)



It is configurable, but not the port, it is the baseUrl like "http://localhost:8080/services"; etc in the ra.xml, above is the default url, if you don't configure it, we will provide a default one.

+    public int getAddressPort(String address) {
+        int index = address.lastIndexOf(":");
+        int end = address.lastIndexOf("/");
+        if (index == 4) {
+            return 80;
+        }


What about https: (index==5), should this method return 443?


Good point, I miss this test case. Thanks. ;-)

+        if (end < index) {
+           return new Integer(address.substring(index +
1)).intValue();
+ } + return new Integer(address.substring(index + 1,
end)).intValue();


Added:
incubator/cxf/trunk/integration/jca/src/test/java/org/apache/cxf/jca/servant/EJBEndpointTest.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/integration/jca/src/test/java/org/apache/cxf/jca/servant/EJBEndpointTest.java?rev=583087&view=auto
==============================================================================
+/**
+ * + */
+public class EJBEndpointTest extends Assert {
+ + private EJBEndpoint endpoint; + + @Before
+    public void setUp() throws Exception {
+        endpoint = new EJBEndpoint(null);
+    }
+ + @Test
+    public void testGetAddressPort() throws Exception {
+        int port = endpoint.getAddressPort("http://localhost:8080/services";);
+        assertEquals(8080, port);
+    }
+ + @Test + public void testGetAddress80Port() throws Exception {
+        int port = endpoint.getAddressPort("http://localhost/services";);
+        assertEquals(80, port);
+    }
+ + @Test
+    public void testGetAddressEndPort() throws Exception {
+        int port = endpoint.getAddressPort("http://localhost:9999";);
+        assertEquals(9999, port);
+    }

Depending on your answer above, we may need to add a test for https://
to make sure it works as well.



Modified: 
incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java?rev=583087&r1=583086&r2=583087&view=diff
==============================================================================
--- 
incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
 (original)
+++ 
incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
 Tue Oct  9 02:29:43 2007
@@ -166,7 +166,7 @@
      */
     public void shutdown() {
         if (shouldDestroyPort()) {
-            if (servantCount == 0) {
+            if (factory != null && servantCount == 0) {
                 factory.destroyForPort(port);
             } else {
                 LOG.log(Level.WARNING, "FAILED_TO_SHOWDOWN_ENGINE_MSG", port);


FAILED_TO_SHUTDOWN_ENGINE_MSG

Regards,
Glen


Reply via email to