「rmijava使用」javarmi包
今天给各位分享rmijava使用的知识,其中也会对javarmi包进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java 用rmi 远程连接access 数据库,但总报错,请高人指点。
- 2、Java的RMI在客户端需要放入实现类吗?
- 3、JAVA编写的webservice时。用到RMI。出现了以下问题,请高手赐教。谢谢。。
- 4、使用java的rmi进行通信,在客户端的Naming.lookup()方法抛出异常java.rmi.UnmarshalException!
- 5、JAVA RMI 求助
- 6、java jdk Rmi远程调用
java 用rmi 远程连接access 数据库,但总报错,请高人指点。
java.lang.NoClassDefFoundError
未找到类
估计是Class.forName("org.objectweb.rmijdbc.Driver").newInstance();
找不到org.objectweb.rmijdbc.Driver
Java的RMI在客户端需要放入实现类吗?
你应该去解决 不把 实现类,放进去报错的原因。 RMI 的话, 客户端 调用一个方法, 这个方法的执行过程是由服务器执行的。 客户端 需要知道的是 方法的名称,也就是对应的接口,以及调用这个方法需要的参数。
JAVA编写的webservice时。用到RMI。出现了以下问题,请高手赐教。谢谢。。
你写的 HelloInterface 是不是接口呢?如果是要按照下面的方式写:
将远程类的功能定义为接口,远程对象是实现接口的对象。接口中定义的方法为远程要调用的方法
远程接口具有以下特点:
1.远程接口必须为public(除非客户端与远程接口在同一包中)
2.远程接口要继承Remote接口、
3.每个方法必须抛出RemoteException异常
4.作为参数或返回值的对象必须为远程接口类型
public interface HelloInterface extends Remote
{
public String sayHello(String s) throws RemoteException;
}
实现类的写法:
1.远程对象实现远程接口
2.继承UnicastRemoteObject对象
3.远程对象必须实现无参数构造,并抛出RemoteException
还有你说的不是在一台服务器上运行。那就要做EJB集群了。需要把当地的项目导成一个jar的包。放到你远程机器上的jboss里面。具体的详细操作方式百度上有。
使用java的rmi进行通信,在客户端的Naming.lookup()方法抛出异常java.rmi.UnmarshalException!
着就是传说中的空指针异常 就是Naming.lookup() 找不到相应的类 就是你这个类是独立的没事作用 报的应该是 404把
JAVA RMI 求助
接口Vote
package vote.I;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Vote extends Remote{
public boolean vote(String s) throws RemoteException;
public String getResult() throws RemoteException;
}
接口实现VoteImpl
package vote.I.impl;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import vote.I.Vote;
public class VoteImpl extends UnicastRemoteObject implements Vote {
public VoteImpl() throws RemoteException {
super();
}
private static final long serialVersionUID = 1L;
private int[] votes = {0, 0, 0};
@Override
public String getResult() throws RemoteException {
StringBuffer result = new StringBuffer("");
result.append("A : " + votes[0] + " ");
result.append("B : " + votes[1] + " ");
result.append("C : " + votes[2] + " ");
return result.toString();
}
@Override
public boolean vote(String s) throws RemoteException {
boolean flag = true;
if("A".equals(s) || "a".equals(s)){
votes[0]++;
}else if("B".equals(s) || "b".equals(s)){
votes[1]++;
}else if("C".equals(s) || "c".equals(s)){
votes[2]++;
}else{
flag = false;
}
return flag;
}
}
服务器端VoteServer
package vote;
import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import vote.I.Vote;
import vote.I.impl.VoteImpl;
public class VoteServer {
/**
* @param args
*/
public static void main(String[] args) {
try {
Vote vote = new VoteImpl();
LocateRegistry.createRegistry(8888);
Naming.bind("//localhost:8888/Vote", vote);
System.out.println("服务器启动!");
} catch (RemoteException e) {
System.out.println("创建远程对象发生异常!");
e.printStackTrace();
} catch (AlreadyBoundException e) {
System.out.println("发生重复绑定对象异常!");
e.printStackTrace();
} catch (MalformedURLException e) {
System.out.println("发生URL畸形异常!");
e.printStackTrace();
}
}
}
客户端VoteClient
package vote;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.Scanner;
import vote.I.Vote;
public class VoteClient {
private static Vote vote;
public VoteClient(){
try {
vote = (Vote) Naming.lookup("//localhost:8888/Vote");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("请输入选项(A, B, C), 单选");
Scanner s = new Scanner(System.in);
String temp = s.next();
try {
while(!vote.vote(temp)){
System.out.println("选项输入错误, 请重新输入");
temp = s.next();
}
} catch (RemoteException e) {
e.printStackTrace();
}
System.out.println("是否要查看结果(Y/N)");
temp = s.next();
if("Y".equals(temp) || "y".equals(temp)){
try {
System.out.println(vote.getResult());
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
new VoteClient();
}
}
先运行服务器端, 然后运行客户端, 可以运行多个客户端, 顺着提示走就行了
这是某个客户端投的, 一个客户端只能投一票, 此时已经有两个人投了A了
java jdk Rmi远程调用
加个端口试试!
然后启动服务,telnet 一下。看看端口开放没有
端口随便。你启动server后。telnet一下。看看你设置的那个端口响应不。
这是server
public class RMIServer {
public static void registRemoteObject() throws Exception {
IRemoteImp impl = new IRemoteImp();
Naming.rebind("rmi://127.0.0.1:1111/mytask", impl);
System.out.println("bound success!");
}
/**
* 创建一个Registry对象
*
* @return 返回一个Registry对象
*/
private static Registry createRegistry() {
Registry registry = null;
int port = 1111;
try {
registry = LocateRegistry.getRegistry(port);
registry.list();
System.out.println("Register the exist server!");
} catch (final Exception e) {
try {
registry = LocateRegistry.createRegistry(port);
System.out.println("Register the exist server!port=" + port);
} catch (final Exception ee) {
ee.printStackTrace();
}
}
return registry;
}
/**
* 将对象注册到rmi服务器上
*/
public static void bind() {
Registry registry = null;
registry = createRegistry();
try {
IRemoteImp impl = new IRemoteImp();
registry.rebind("mytask", impl);
System.out.println("mytask server start!");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
try {
bind();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是客户端
public class RMIClient {
public static void getRemoteObject() throws Exception{
IRemote obj = (IRemote)Naming.lookup("rmi://127.0.0.1:1111/mytask"); //得到远程发布的服务
Task task = new Task();
task.doWork();
Object result = obj.invoke(task);
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
RMIClient.getRemoteObject();
}
}
rmijava使用的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于javarmi包、rmijava使用的信息别忘了在本站进行查找喔。