Skip to content

WebService 踩坑记录

WebService CXF 动态调用

java
public static String invoke(String url, String method, String param, String namespace) {
    JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
    try(Client client = factory.createClient(url)) {
        QName qName = new QName(namespace, method);
        Object[] objects = client.invoke(qName, param);
        String response = String.valueOf(objects[0]);
        log.debug("response={}", response);
        return response;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

问题 1:No compiler detected, make sure you are running on top of a JDK instead of a JRE.

应用需要运行在 JDK 环境下,而不是 JRE,配置 JAVA_HOME 和 Path 环境变量,重启应用。

问题 2: webservice 错误: 编码 gbk 的不可映射字符

访问 webservice 信息有中文,就会出现这个错误,修改启动配置文件添加 -Dfile.encoding=UTF-8 参数

java -jar -Dfile.encoding=UTF-8 xxxx.jar