Если я вызываю этот метод сервера с клиентом из другого места, iam получает следующую ошибку. Если я запустил клиент из того же места, где находится сервер, я получаю вывод.Java Remote method invocation
Просьба дать несколько советов для вызова моего сервера rmi с клиентом rmi из другого места.
Error
Exception in thread "main" java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: com.transform.xsl.XslFoTransformer_Stub (no security manager: RMI class loader disabled)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:101)
at com.transform.xsl.RmiClient.main(RmiClient.java:15)
Caused by: java.lang.ClassNotFoundException: com.transform.xsl.XslFoTransformer_Stub (no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:394)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:184)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:637)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:264)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:222)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1610)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1515)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
... 3 more
Код ======
import java.io.File;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface XslFoTransformerInterface extends Remote {
public byte[] doTransform(File stylesheet, File datafile) throws Throwable,RemoteException;
}
public class XslFoTransformer extends UnicastRemoteObject implements XslFoTransformerInterface {
protected XslFoTransformer() throws RemoteException {
super();
}
public byte[] doTransform(File stylesheet, File datafile) throws Exception {
String fileName = datafile.getName();
int pos = fileName.lastIndexOf(".");
if (pos > 0) {
fileName = fileName.substring(0, pos);
}
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
File file = new File(fileName + ".xsl-fo");
try {
// File stylesheet = new
// File("C:\\Users\\Q811213\\Documents\\XSLT\\files\\ECGSearchResultsPDF_changed1.xsl");
// File datafile = new
// File("C:\\Users\\Q811213\\Documents\\XSLT\\files\\NEWDATA.xml");
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(datafile);
TransformerFactory tFactory = TransformerFactory.newInstance();
StreamSource stylesource = new StreamSource(stylesheet);
Transformer transformer = tFactory.newTransformer(stylesource);
DOMSource source = new DOMSource(document);
ByteArrayOutputStream bos=new ByteArrayOutputStream();
StreamResult result=new StreamResult(bos);
transformer.transform(source, result);
byte [] array=bos.toByteArray();
return array;
} catch (Exception e) {
throw e;
}}}
--Rmi server class
public class RmiServer {
public static void main(String args[]) throws Exception{
try{
XslFoTransformerInterface stub=new XslFoTransformer();
Naming.rebind("rmi://localhost:1099/Xsl-Fo_Transform",stub);
}catch(Exception e){
throw e;
}
}
}
--Rmi client created in different location
public class RmiClient {
public static void main(String args[]) throws Throwable {
try {
XslFoTransformerInterface stub = (XslFoTransformerInterface) Naming
.lookup("rmi://localhost:1099/Xsl-Fo_Transform");
System.out.println("stub is ready" + stub);
File f1 = new File(
"C:\\Users\\s811213\\osbwstest\\XSL-FO_Transformer\\files\\ECGSearchResultsPDF_changed1.xsl");
File f2 = new File(`enter code here`
"C:\\Users\\s811213\\osbwstest\\XSL-FO_Transformer\\files\\NEWDATA.xml");
try {
byte[] f = stub.doTransform(f1, f2);
}cartch(){}
}}
Если я называю этот метод сервера с клиентом из другого местоположения IAM получения следующего error.If я запустить клиент с того же места, где сервер там я получаю вывод. Просьба дать несколько советов для вызова моего сервера rmi с клиентом rmi из другого места.
«localhost» ... – Stefan