我正在通过JAX-WS API动态使用Web服务。实例化服务类并通过反射API按Web服务调用。
虽然预期的和实际的论证是相同的,但它的参数#34;参数类型不匹配"异常。
快速帮助表示赞赏。
Class<?>[] paramTypes = serviceClassMethod.getParameterTypes();
System.out.println("Expected Param Class : "+paramTypes[0].getName());
System.out.println("Actual Param Class : "+reqVals[0].getClass());
System.out.println("Expected number : "+paramTypes.length);
System.out.println("Actual number : "+reqVals.length);
Object wsResponse = serviceClassMethod.invoke(service, reqVals);
System.out.println("Invocation successful...");
输出:
Expected Param Class : com.bla.bla.ws.User
Actual Param Class : class com.bla.bla.ws.User
Expected number : 1
Actual number : 1
答案 0 :(得分:2)
这听起来像是一个类加载问题。 JRE将由不同类加载器加载的同一类视为不同的类。这取决于您创建参数对象的方式。您可以使用以下方法测试:
paramTypes[0].equals(reqVals[0].getClass())
如果不是这样,那么您使用的是两个不同的类。
解决方案是确保使用paramTypes[0].newInstance();