小弟请教一下RMI的问题
源程序如下:接口类
package rmi;
import java.rmi.*;
public interface imrinterface extends Remote {
public String DBModify(String string) throws RemoteException;
}接口实现类
package rmi;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class rmiinterfaceimp extends UnicastRemoteObject implements imrinterface
{
public rmiinterfaceimp(String name) throws RemoteException
{
super();
try
{ if (java.rmi.Naming.lookup(name) == null)
Naming.bind(name, this);
else
Naming.rebind(name, this);
}
catch (Exception e)
{
if (e instanceof RemoteException)
{
throw (RemoteException) e;
}
else
{
throw new RemoteException(e.getMessage());
} }
} public String DBModify(String string)
{
String temp=string;
temp.concat("ppppppppp");
return temp;
} }客户端
package rmi;
import java.rmi.*;public class rmiclient {
public void RMIClient()
{
try {
String serverName = "localhost";
//指定安全策略文件
System.setProperty("java.security.policy",
"file:./src/rmi/dbRMI.policy"); //设置系统安全接口
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
imrinterface temp;
temp = (imrinterface) Naming.lookup(
"//" + serverName + ":1200/DBConnection"); String kao=temp.DBModify("dasdsadsadsadasdasdasdsadas"); System.out.println(kao);
}
catch(Exception ee)
{
} }}服务器端package rmi;
import java.rmi.*;
import java.rmi.registry.*;public class rmiServer {
public static void main(String[] args) throws Exception {
//指定安全策略文件
System.setProperty("java.security.policy",
"file:./src/rmi/dbRMI.policy"); if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
} //启动rmiregistry
LocateRegistry.createRegistry(1200);
rmiinterfaceimp dbInterfaceImp = new rmiinterfaceimp("DBConnection");
System.out.println("Ready.....");
}}可是运行服务器时出错
E:\Borland\JBuilder2005\jdk1.4\bin\javaw -classpath "E:\Documents and Settings\66\jbproject\rmi2\classes;E:\Borland\JBuilder2005\jdk1.4\bin\JBuilder2005_c.jar;E:\Borland\JBuilder2005\jdk1.4\jre\bin\JBuilder2005_c.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\im\indicim.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\im\thaiim.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\dnsns.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\sunjce_provider.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\ldapsec.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\localedata.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\jsse.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\plugin.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\sunrsasign.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\charsets.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\rt.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\jce.jar;E:\Borland\JBuilder2005\jdk1.4\jre\javaws\javaws.jar;E:\Borland\JBuilder2005\jdk1.4\lib\tools.jar;E:\Borland\JBuilder2005\jdk1.4\lib\dt.jar;E:\Borland\JBuilder2005\jdk1.4\lib\htmlconverter.jar" rmi.rmiServer
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: rmi.DBInterfaceImp_Stub
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:84)
at rmi.rmiinterfaceimp.<init>(rmiinterfaceimp.java:22)
at rmi.rmiServer.main(rmiServer.java:28)
Caused by: java.lang.ClassNotFoundException: rmi.DBInterfaceImp_Stub
at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:430)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:631)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:257)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:200)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
... 4 more
Exception in thread "main" 求救的啊
源程序如下:接口类
package rmi;
import java.rmi.*;
public interface imrinterface extends Remote {
public String DBModify(String string) throws RemoteException;
}接口实现类
package rmi;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class rmiinterfaceimp extends UnicastRemoteObject implements imrinterface
{
public rmiinterfaceimp(String name) throws RemoteException
{
super();
try
{ if (java.rmi.Naming.lookup(name) == null)
Naming.bind(name, this);
else
Naming.rebind(name, this);
}
catch (Exception e)
{
if (e instanceof RemoteException)
{
throw (RemoteException) e;
}
else
{
throw new RemoteException(e.getMessage());
} }
} public String DBModify(String string)
{
String temp=string;
temp.concat("ppppppppp");
return temp;
} }客户端
package rmi;
import java.rmi.*;public class rmiclient {
public void RMIClient()
{
try {
String serverName = "localhost";
//指定安全策略文件
System.setProperty("java.security.policy",
"file:./src/rmi/dbRMI.policy"); //设置系统安全接口
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
imrinterface temp;
temp = (imrinterface) Naming.lookup(
"//" + serverName + ":1200/DBConnection"); String kao=temp.DBModify("dasdsadsadsadasdasdasdsadas"); System.out.println(kao);
}
catch(Exception ee)
{
} }}服务器端package rmi;
import java.rmi.*;
import java.rmi.registry.*;public class rmiServer {
public static void main(String[] args) throws Exception {
//指定安全策略文件
System.setProperty("java.security.policy",
"file:./src/rmi/dbRMI.policy"); if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
} //启动rmiregistry
LocateRegistry.createRegistry(1200);
rmiinterfaceimp dbInterfaceImp = new rmiinterfaceimp("DBConnection");
System.out.println("Ready.....");
}}可是运行服务器时出错
E:\Borland\JBuilder2005\jdk1.4\bin\javaw -classpath "E:\Documents and Settings\66\jbproject\rmi2\classes;E:\Borland\JBuilder2005\jdk1.4\bin\JBuilder2005_c.jar;E:\Borland\JBuilder2005\jdk1.4\jre\bin\JBuilder2005_c.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\im\indicim.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\im\thaiim.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\dnsns.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\sunjce_provider.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\ldapsec.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\localedata.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\jsse.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\plugin.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\sunrsasign.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\charsets.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\rt.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\jce.jar;E:\Borland\JBuilder2005\jdk1.4\jre\javaws\javaws.jar;E:\Borland\JBuilder2005\jdk1.4\lib\tools.jar;E:\Borland\JBuilder2005\jdk1.4\lib\dt.jar;E:\Borland\JBuilder2005\jdk1.4\lib\htmlconverter.jar" rmi.rmiServer
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: rmi.DBInterfaceImp_Stub
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:84)
at rmi.rmiinterfaceimp.<init>(rmiinterfaceimp.java:22)
at rmi.rmiServer.main(rmiServer.java:28)
Caused by: java.lang.ClassNotFoundException: rmi.DBInterfaceImp_Stub
at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:430)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:631)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:257)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:200)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
... 4 more
Exception in thread "main" 求救的啊
解决方案 »
- java 保持目录结构复制文件
- javaSE里面StringReader把我搞疯了
- 很基础的一个问题 请基础好的进来看看
- 高分求助:怎样把java程序做成WINDOWS服务
- 菜菜的问题,jsp与j2ee是一回事不,如果不是一回事,有什么不同,没分了但也想知道
- 高分相送解决JBUILDER6.0中创建EJB的问题,还有WEBLOGIC6.0(200分)
- config文件读不到。
- 实例化bean时出错,请高手指点
- java处理一行字符串,怎么把有标点紧跟空格(比如:“... ”)的类似可能是要换行的都给换成标点+换行符+空格
- 龙通科技面试题之:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,再从他的下一个人重新报数,最后留下的是原来第几号的那位
- static{}作用是什么,请高手指教!
- 请问在JList中用什么方法可以获取,jlist中的行
我的用的是Jbuilder2005
rmiinterfaceimp_Stub
都已经产生了
可还是一样的错误的
E:\Borland\JBuilder2005\jdk1.4\bin\javaw -classpath "E:\Documents and Settings\66\jbproject\rmi2\classes;E:\Borland\JBuilder2005\jdk1.4\bin\JBuilder2005_c.jar;E:\Borland\JBuilder2005\jdk1.4\jre\bin\JBuilder2005_c.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\im\indicim.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\im\thaiim.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\dnsns.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\sunjce_provider.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\ldapsec.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\localedata.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\jsse.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\plugin.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\sunrsasign.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\charsets.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\rt.jar;E:\Borland\JBuilder2005\jdk1.4\jre\lib\jce.jar;E:\Borland\JBuilder2005\jdk1.4\jre\javaws\javaws.jar;E:\Borland\JBuilder2005\jdk1.4\lib\tools.jar;E:\Borland\JBuilder2005\jdk1.4\lib\dt.jar;E:\Borland\JBuilder2005\jdk1.4\lib\htmlconverter.jar" rmi.rmiServer
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: rmi.DBInterfaceImp_Stub
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:84)
at rmi.rmiinterfaceimp.<init>(rmiinterfaceimp.java:22)
at rmi.rmiServer.main(rmiServer.java:28)
Caused by: java.lang.ClassNotFoundException: rmi.DBInterfaceImp_Stub
at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:430)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:631)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:257)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:200)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
... 4 more
Exception in thread "main"
start rmiregistryhoho!
java.rmi.RemoteException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)
at Rmientity.<init>(Rmientity.java:35)
at Rmiserver.main(Rmiserver.java:28)
Exception in thread "main"
还出现这样的问题
在程序里面打开的了啊
//启动rmiregistry
LocateRegistry.createRegistry(1200);
permission java.net.SocketPermission "*:1024-65535", "accept,connect,listen,resolve";或者你单独写一个policy文件,命名为xx.policy
然后添加运行参数:
java -Djava.security.policy=xx.policy classname
在jbuilder中添加运行参数java -Djava.security.policy=policy
的目录下面有了一个dbRMI.policy的文件
grant {
permission java.net.SocketPermission "*:1024-65535", "accept,connect,listen,resolve";
permission java.io.FilePermission "<<ALL FILES>>", "read,write";
};
1.是否使用rmic生成了远程对象的存根类
2.在启动客户端的时候,是否将存根类的位置放在classpath中,以便客户端运行的时候能找到此类
3.如果没有将存根类的位置放在classpath中,可以使用动态类加载技术。你是否采用了动态类加载。
麻烦,小弟初次使用JAVA
可否说的更详细一些
谢谢了