我有一个第三方jar,它附带一个jaxb-impl.jar并将其包含在其manifest类路径中.问题是,似乎提供自己的JAXB版本(无论它是哪个版本)似乎打破了JAX-WS中的SoapFaultBuilder.
根据非官方的JAXB指南,似乎Sun在将JAXB折叠到JDK中时故意更改了包名称,以避免与独立版本冲突.但是,随JDK一起提供的SoapFaultBuilder(我相信JAX-WS的一部分)明确依赖于新的内部包名.如果您添加了一个独立的JAXB jar(即使它与JAXB的版本号相同),这会在构建错误消息时导致失败.
这是我的小测试案例:我制作一个简单的Web服务:
package wstest;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWorld{
@WebMethod String getHelloWorldAsString(String name);
}
Run Code Online (Sandbox Code Playgroud)
一个简单抛出异常的实现.(因为问题只出现在SOAPFaultBuilder中):
package wstest;
import javax.jws.WebService;
//Service Implementation
@WebService(endpointInterface = "wstest.HelloWorld")
public class HelloWorldImpl implements HelloWorld{
@Override
public String getHelloWorldAsString(String name) {
//return "Hello World JAX-WS " + name;
throw new RuntimeException("Exception for: " + name);
}
}
Run Code Online (Sandbox Code Playgroud)
还有一个发布Web服务的类:
package wstest;
import javax.xml.ws.Endpoint;
//Endpoint publisher
public class HelloWorldPublisher{ …
Run Code Online (Sandbox Code Playgroud) 如何为 HTMLCollectionOf 或 NodeCollection 设置 css 样式
let items = document.querySelectorAll('.pac-item') as NodeListOf<HTMLElement>;
Run Code Online (Sandbox Code Playgroud)