CXF 內部攔截器鏈(AttachmentInInterceptor)處理 MIME 附件時依賴 JavaMail API,若專案缺少 javax.mail 相關 JAR,啟動 Servlet 時會拋出 ClassNotFoundException: javax.mail.MessagingException。此為經典依賴缺漏問題,非配置錯誤。
java.lang.ClassNotFoundException: javax.mail.MessagingException
at org.apache.cxf.interceptor.AttachmentInInterceptor.handleMessage(AttachmentInInterceptor.java:62)
...
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:129)
<!-- JavaMail API (JDK 9+ 模組化後需額外引入) -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>
<!-- 或舊版群組 ID (Java EE 時代) -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<url-pattern>rvices/*</url-pattern> 缺少前導斜線,建議改為 /services/* 或 /*。@WebService、@SOAPBinding 正確,且參數類別可序列化。WEB-INF/lib,避免雙親委派模型導致找不到類別。ClassNotFoundException。CXF 作為成熟 Web Service 框架,核心功能依賴極少,但進階特性(附件、WS-Security、MTOM)常需額外庫,建立完整依賴管理習慣可避免此類低級錯誤。