2008-09-24 2 views
1

이 포럼에 대한 큰 의구심이 있지만 기꺼이 놀랄 것입니다.) 나를 다시 궤도에 오르게하는 사람들에게 명성과 위대한 업적.JavaSpaces의 Blitz 구현 사용

I 메모리의 예에서 http://today.java.net/pub/a/today/2005/04/21/farm.html

상기 제공되는 ComputeFarm 예를 구현하는 자바 스페이스 (http://www.dancres.org/blitz/blitz_js.html)의 공세 구현을 사용하려고 시도하고는 잘 작동하지만 난 공세를 사용하려고 할 때마다 밖으로의 상자

(예 com.sun.jini.mahalo.TxnMgrProxy 클래스 경로에)

2008-09-24 09:57:37.316 ERROR [Thread-4] JavaSpaceComputeSpace 155  - Exception while taking task. 
java.rmi.ServerException: RemoteException in server thread; nested exception is: 
    java.rmi.UnmarshalException: unmarshalling method/arguments; nested exception is: 
    java.lang.ClassNotFoundException: com.sun.jini.mahalo.TxnMgrProxy 
    at net.jini.jeri.BasicInvocationDispatcher.dispatch(BasicInvocationDispatcher.java:644) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$6.run(ObjectTable.java:597) 
    at net.jini.export.ServerContext.doWithServerContext(ServerContext.java:103) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$Target.dispatch0(ObjectTable.java:595) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$Target.access$700(ObjectTable.java:212) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$5.run(ObjectTable.java:568) 
    at com.sun.jini.start.AggregatePolicyProvider$6.run(AggregatePolicyProvider.java:527) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$Target.dispatch(ObjectTable.java:565) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$Target.dispatch(ObjectTable.java:540) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$RD.dispatch(ObjectTable.java:778) 
    at net.jini.jeri.connection.ServerConnectionManager$Dispatcher.dispatch(ServerConnectionManager.java:148) 
    at com.sun.jini.jeri.internal.mux.MuxServer$2.run(MuxServer.java:244) 
    at com.sun.jini.start.AggregatePolicyProvider$5.run(AggregatePolicyProvider.java:513) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.jini.jeri.internal.mux.MuxServer$1.run(MuxServer.java:241) 
    at com.sun.jini.thread.ThreadPool$Worker.run(ThreadPool.java:136) 
    at java.lang.Thread.run(Thread.java:595) 
    at com.sun.jini.jeri.internal.runtime.Util.__________EXCEPTION_RECEIVED_FROM_SERVER__________(Util.java:108) 
    at com.sun.jini.jeri.internal.runtime.Util.exceptionReceivedFromServer(Util.java:101) 
    at net.jini.jeri.BasicInvocationHandler.unmarshalThrow(BasicInvocationHandler.java:1303) 
    at net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocationHandler.java:832) 
    at net.jini.jeri.BasicInvocationHandler.invokeRemoteMethod(BasicInvocationHandler.java:659) 
    at net.jini.jeri.BasicInvocationHandler.invoke(BasicInvocationHandler.java:528) 
    at $Proxy0.take(Unknown Source) 
    at org.dancres.blitz.remote.BlitzProxy.take(BlitzProxy.java:157) 
    at compute.impl.javaspaces.JavaSpaceComputeSpace.take(JavaSpaceComputeSpace.java:138) 
    at example.squares.SquaresJob.collectResults(SquaresJob.java:47) 
    at compute.impl.AbstractJobRunner$CollectThread.run(AbstractJobRunner.java:28) 
Caused by: java.rmi.UnmarshalException: unmarshalling method/arguments; nested exception is: 
    java.lang.ClassNotFoundException: com.sun.jini.mahalo.TxnMgrProxy 
    at net.jini.jeri.BasicInvocationDispatcher.dispatch(BasicInvocationDispatcher.java:619) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$6.run(ObjectTable.java:597) 
    at net.jini.export.ServerContext.doWithServerContext(ServerContext.java:103) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$Target.dispatch0(ObjectTable.java:595) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$Target.access$700(ObjectTable.java:212) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$5.run(ObjectTable.java:568) 
    at com.sun.jini.start.AggregatePolicyProvider$6.run(AggregatePolicyProvider.java:527) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$Target.dispatch(ObjectTable.java:565) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$Target.dispatch(ObjectTable.java:540) 
    at com.sun.jini.jeri.internal.runtime.ObjectTable$RD.dispatch(ObjectTable.java:778) 
    at net.jini.jeri.connection.ServerConnectionManager$Dispatcher.dispatch(ServerConnectionManager.java:148) 
    at com.sun.jini.jeri.internal.mux.MuxServer$2.run(MuxServer.java:244) 
    at com.sun.jini.start.AggregatePolicyProvider$5.run(AggregatePolicyProvider.java:513) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.jini.jeri.internal.mux.MuxServer$1.run(MuxServer.java:241) 
    at com.sun.jini.thread.ThreadPool$Worker.run(ThreadPool.java:136) 
    at java.lang.Thread.run(Thread.java:595) 
Caused by: java.lang.ClassNotFoundException: com.sun.jini.mahalo.TxnMgrProxy 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at net.jini.loader.pref.PreferredClassLoader.loadClass(PreferredClassLoader.java:922) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:242) 
    at net.jini.loader.pref.PreferredClassProvider.loadClass(PreferredClassProvider.java:613) 
    at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247) 
    at net.jini.loader.ClassLoading.loadClass(ClassLoading.java:138) 
    at net.jini.io.MarshalInputStream.resolveClass(MarshalInputStream.java:296) 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1544) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) 
    at com.sun.jini.jeri.internal.runtime.Util.unmarshalValue(Util.java:221) 
    at net.jini.jeri.BasicInvocationDispatcher.unmarshalArguments(BasicInvocationDispatcher.java:1049) 
    at net.jini.jeri.BasicInvocationDispatcher.dispatch(BasicInvocationDispatcher.java:599) 
    ... 17 more 

답변

0
: 구현 나는 다음과 같은 오류가 발생합니다

글쎄, 자바 공간 서버가 클래스를 찾지 못하는 것 같습니다 :

com.sun.jini.mahalo.TxnMgrProxy.

서버를 시작할 때 Mahalo (이 : http://www.dancres.org/blitz/blitz_inst.html 페이지의 블리츠 배포판에 포함되어야 함)를 classpath에 추가해야합니다.

이 조언이 도움이되지 않으면 서버 시작 방법에 대한 몇 가지 정보를 게시하십시오.

0

내 원래의 게시물을 참고 : 예 com.sun.jini.mahalo.TxnMgrProxy 클래스 경로에

당신은 javap에 익숙하다면

- 정규화 된 클래스 이름을 지정하면 그 여부를 결정합니다 그것이 계급 경로에 있지 않습니다.

은은 javap의 com.sum.jini.mahalo.TxnMgrProxy 실행했을 때 얻을 결과 : 그래서 com.sun.jini.mahalo.TxnMgrProxy 일부 항아리에 포함되어

C:\dev\jini\blitz>javap com.sun.jini.mahalo.TxnMgrProxy 
Compiled from "TxnMgrProxy.java" 
class com.sun.jini.mahalo.TxnMgrProxy extends java.lang.Object implements net.jini.core.transaction.server.TransactionManager,net.jini.admin.Admi 
nistrable,java.io.Serializable,net.jini.id.ReferentUuid{ 
    final com.sun.jini.mahalo.TxnManager backend; 
    final net.jini.id.Uuid proxyID; 
    static com.sun.jini.mahalo.TxnMgrProxy create(com.sun.jini.mahalo.TxnManager, net.jini.id.Uuid); 
    public net.jini.core.transaction.server.TransactionManager$Created create(long)  throws net.jini.core.lease.LeaseDeniedException, java.r 
mi.RemoteException; 
    public void join(long, net.jini.core.transaction.server.TransactionParticipant, long)  throws net.jini.core.transaction.UnknownTransacti 
onException, net.jini.core.transaction.CannotJoinException, net.jini.core.transaction.server.CrashCountException, java.rmi.RemoteException; 
    public int getState(long)  throws net.jini.core.transaction.UnknownTransactionException, java.rmi.RemoteException; 
    public void commit(long)  throws net.jini.core.transaction.UnknownTransactionException, net.jini.core.transaction.CannotCommitException, 
java.rmi.RemoteException; 
    public void commit(long, long)  throws net.jini.core.transaction.UnknownTransactionException, net.jini.core.transaction.CannotCommitExce 
ption, net.jini.core.transaction.TimeoutExpiredException, java.rmi.RemoteException; 
    public void abort(long)  throws net.jini.core.transaction.UnknownTransactionException, net.jini.core.transaction.CannotAbortException, j 
ava.rmi.RemoteException; 
    public void abort(long, long)  throws net.jini.core.transaction.UnknownTransactionException, net.jini.core.transaction.CannotAbortExcept 
ion, net.jini.core.transaction.TimeoutExpiredException, java.rmi.RemoteException; 
    public java.lang.Object getAdmin()  throws java.rmi.RemoteException; 
    public net.jini.id.Uuid getReferentUuid(); 
    public int hashCode(); 
    public boolean equals(java.lang.Object); 
    com.sun.jini.mahalo.TxnMgrProxy(com.sun.jini.mahalo.TxnManager, net.jini.id.Uuid, com.sun.jini.mahalo.TxnMgrProxy$1); 
} 
1

, 즉이 포함되어 있습니다 CLASSPATH 환경 변수에서.

하지만 아마도 서버를 시작하기 위해 일부 스크립트를 사용하고있을 것입니다. 그리고 이것은 아마도 여러분의 환경 CLASSPATH 변수보다 우선권을 갖는 "-classpath"명령 행 스위치를 지정함으로써 java를 시작할 것입니다.

은 javap -classpath someUnknownJar.jar com.sun.jini.mahalo.TxnMgrProxy

... 갑자기 클래스는 더 이상 찾을 수 없습니다 :

http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/classpath.html

당신은 실행하여이 문제를 시뮬레이션 할 수 있습니다 . 그래서 시도해보십시오 클라이언트와 서버의 자바 VM을 시작하는 방법을 찾아 완전한 명령 줄을 제공하십시오. (어떤 종류의 스크립트를 사용하는 경우 java 명령 앞에 "echo ..."를 추가하고 여기에 출력을 붙여 넣기 만하면됩니다.)

0

-Djava.security.policy =/wherever/policy.all 및 -Djava.security.manager =를 지정했는지 확인하십시오. 또한 RMI 코드 서버를 실행해야 할 수도 있습니다.

1

이것은 RMI 클래스로드 문제와 비슷합니다.서버 프로세스가 전달 된 TxnMgrProxy 개체를 비 정렬 화하려고 시도하는 것으로 보입니다 (예제의 특성을 모르지만 스택 추적에서 추측 할 수 있음). 이 객체에는 클래스 정의가있는 코드베이스가 주석으로 추가되어야합니다. Mahalo가 mahalo-dl.jar (또는 클래스 정의가있는 JAR)을 다운로드 할 수있는 URL을 가리키는 java.rmi.server.codebase 등록 정보로 시작해야 할 수도 있습니다.

JAR을 로컬에서 사용할 수있는 경우에도 충분하지 않을 수 있습니다. PreferredClassProvider (스택 트레이스에 있음)는 일반적인 Java 클래스 로더 위임 체계를 사용하지 않으므로 클래스가 로컬에 있어도 코드베이스를 통해 정의를 가져 오려고합니다.

알아 내기 힘든 문제입니다. 희망에 대한 답변에 가까운 무언가에 충돌합니다. 행운을 빕니다.