Я пытаюсь использовать Reflection на стороне сервера только из приложения GWT. У меня есть базовый пример, который работает в примере, отличном от GWT, который можно увидеть ниже.GWT Отражение на стороне сервера
package com.xyz.reflection;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class EntryPoint {
/**
* @param args
*/
public static void main(String[] args) {
ClassLoader dynClassLoader = ClassLoader.getSystemClassLoader();
Class<?> dynClass = null;
try {
dynClass = dynClassLoader.loadClass("com.xyz.reflection.RunMe");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Object dynInstance = null;
try {
dynInstance = dynClass.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Method dynMethod = null;
try {
try {
dynMethod = dynInstance.getClass().getMethod("returnSid",
new Class[] { PassMe.class });
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
String returnValue = (String) dynMethod.invoke(dynInstance,
new Object[] { new PassMe() });
System.out.println("Return Value: " + returnValue.toString());
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
используя метко назвал:
package com.xyz.reflection;
public class PassMe {
private String sid = "DEFAULT_SID";
public PassMe() {
this.sid = "INITIATED_SID";
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
}
и:
package com.xyz.reflection;
public class RunMe {
public String returnSid(PassMe s) {
return s.getSid();
}
}
Это прекрасно работает. При попытке запуска это с серверной стороны класса GWT он не работает, а вместо этого возвращает
java.lang.NoSuchMethodException: com.xyz.reflection.RunMe.returnSid(com.xyz.reflection.PassMe)
Если изменить параметр в строку (вместо класса в «PassMe») она отлично работает. Почему мне не нравится проходить мой класс «PassMe»? Я думал, что это может быть проблема с сериализацией, несмотря на то, что это 100% -ный код сервера, но мне тоже не повезло.
Заранее благодарим за любую помощь, которую любой может дать мне с этим.
Что вы используете для запуска сервера GWT (режим размещения в GWT? Автономный или встроенный контейнер WAR (например, Jetty)? – Syntax