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.
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.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Three Knives
Every line of code you contribute to open source could help make the future better.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
