我正在创建一个与 Web 服务通信的程序,该程序是用 JSP 和 Struts 编写的。但是当我想创建 Web 服务的新实例时,出现以下错误:
SEVERE: Servlet.service() for servlet [FrontController] in context with path [/P3_GUI] threw exception [Servlet execution threw an exception] with root cause
java.lang.IllegalArgumentException: com.sun.xml.messaging.saaj.soap.LocalStrings != com.sun.xml.internal.messaging.saaj.soap.LocalStrings
这发生在我的 ActionClass 的以下代码中
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import vakws.Vak;
import vakws.VakService;
public class AddAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
AddForm myForm = (AddForm)form;
VakService service = new VakService();
Vak vakProxy = service.getVakPort();
boolean result = vakProxy.addVak(myForm.getVakName(), Double.parseDouble(myForm.getVakMark()));
if(!result){
return mapping.findForward("show_addError");
}
return mapping.findForward("show_addResults");
}
}
VakService和VakProxy是使用wsdl文档自动生成的。
我正在 Eclipse 中进行开发,并将程序部署在 Tomcat 服务器上。网络服务器使用 JAX-WS 2.2.3 运行
有人知道这个问题的解决办法吗?
提前致谢!
您的 web 应用程序的运行时类路径中有多个不同版本的 SAAJ 库。 SAAJ 已经与 JDK 捆绑在一起。可能您的 web 应用程序的
saaj-*.jar
中有一些 /WEB-INF/lib
文件,它与 JDK 捆绑的 SAAJ 库冲突。清理它。