smart-servlet v3.3 Achieves 99.8% Pass Rate on Jakarta Servlet TCK – Validation, Not Marketing

The smart-servlet 3.3 release ran the full Jakarta Servlet TCK suite of 1,724 test cases, achieving a 99.8% pass rate with only four non‑critical errors, and the report details why this verifiable compatibility matters for middleware selection, compliance reviews, and migration risk, plus two spec‑compliant optimizations.

Three Knives
Three Knives
Three Knives
smart-servlet v3.3 Achieves 99.8% Pass Rate on Jakarta Servlet TCK – Validation, Not Marketing

The smart-servlet 3.3 project publicly ran the official Jakarta Servlet Technology Compatibility Kit (TCK) to prove real compliance rather than relying on marketing copy.

Test Results

TCK version: tck-build 3.2

Total test cases: 1,724

Errors: 4 (all in rarely used edge scenarios)

Failures: 0

Skipped: 0

Pass rate: 99.8%

Total time: 414.9 seconds (≈7 minutes)

All 1,724 assertions defined by the specification are satisfied; the four errors correspond to obscure corner cases that current business code rarely touches. The team plans to close the remaining 0.2% gap but will not wait for a perfect “100%” figure before publishing the report.

Why Enterprise Users Should Care

Verifiable fact, not marketing hype. Every test case can be reproduced, so decisions can be based on concrete evidence.

Direct impact on migration cost. A higher pass rate means fewer behavioral differences when moving applications from Tomcat or Undertow to smart‑servlet, reducing the risk of hidden bugs.

Signal of long‑term commitment. The project consistently follows each TCK update, showing a genuine intention to maintain compatibility over time.

Two Optimizations Noticed by Detail‑Oriented Users

HTTP/2 Server Push cookie handling. Previously each cookie was sent in a separate header, violating RFC 6265 (which requires a single Cookie header) and also pushing expired cookies. The new logic concatenates all valid cookies into one header and filters out those with maxAge == 0:

if (!response.getCookies().isEmpty()) {
    StringBuilder sb = new StringBuilder();
    response.getCookies().stream()
        .filter(cookie -> cookie.getMaxAge() != 0)
        .forEach(cookie -> {
            sb.append(cookie.getName()).append('=')
              .append(cookie.getValue()).append(';');
        });
    if (sb.length() > 0) {
        pushRequest.setHeader(HeaderName.COOKIE.getLowCaseName(),
            sb.substring(0, sb.length() - 1));
    }
}

web.xml cookie-config support. The servlet specification allows declaring session‑cookie attributes (name, domain, HttpOnly, Secure, max‑age) in the deployment descriptor. The previous implementation parsed this incompletely; the fix now fully applies the cookie-config settings, eliminating the need for additional code adjustments during migration.

Conclusion

With 1,724 test cases, a 99.8% pass rate, and zero failures, smart‑servlet provides one of the most transparent compatibility proofs available. The remaining 0.2% will be addressed continuously, aiming for full compliance. Teams evaluating domestic middleware or undergoing “信创” compliance reviews are encouraged to run the suite themselves or raise issues on the GitHub repository.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

middlewareHTTP/2cookiesmart-servletJakarta ServletTCK
Three Knives
Written by

Three Knives

Every line of code you contribute to open source could help make the future better.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.