tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
330
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kizuna Kizuna ist offline Grünschnabel
    Registriert seit
    Oct 2011
    Beiträge
    1
    Hallo zusammen,

    Ich habe einen RMI-Server entwickelt, der die Initialisierung eines Programmes übernehmen soll. Nun möchte ich gerne diesen Server über einen Client ansprechen, allerdings nicht konsolenbasiert, sondern als Webservice.

    Das Ganze sieht etwa so aus:

    public class Server {
    public static void main(String[] args) {
    if (System.getSecurityManager() == null) {
    System.setSecurityManager(new SecurityManager());
    }
    System.getSecurityManager().checkListen(1099);
    try {
    String name = "Compute";
    Finder f = new Finder();
    I_Finder stub = (I_Finder) UnicastRemoteObject.exportObject(f, 0);
    Registry registry = LocateRegistry.createRegistry(1099);
    registry.bind(name, stub);
    } catch (Exception e) {
    System.err.println("starting CellFinder server caused exception:");
    e.printStackTrace();
    }
    }
    }

    public interface I_Finder extends Remote {
    public String search(String arg) throws RemoteException;
    }

    public class Finder implements I_Finder {
    static int count = 0;
    public String search(String arg) {
    count++;
    return count + "," + arg;
    }
    }

    Zum testen habe ich einen kleinen Client erstellt, der sich über die Konsole starten lässt und auf den Server zugreift:

    public class Client {
    public static void main(String args[]) {
    if (System.getSecurityManager() == null) {
    System.setSecurityManager(new SecurityManager());
    }
    try {
    String name = "Compute";
    Registry registry = LocateRegistry.getRegistry("localhost",1099);
    I_Finder f = (I_Finder) registry.lookup(name);
    String test = f.search("hello world");
    System.out.println(test);
    } catch (Exception e) {
    System.err.println("ComputePi exception:");
    e.printStackTrace();
    }
    }
    }

    Nun möchte ich den Client aber gerne als Webservice laufen lassen. Dabei ergibt sich für mich das Problem, dass ich zum starten des Clients von der Konsole immer noch die Referenz auf ein server.policy -file mit übergebe (java -Djava.security.policy=/Users/server_workspace/Dummy/server.policy Client).

    Ich habe den Client folgendermaßen abgeändert:
    @Path("/hello")
    public class Client {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayPlainTextHello() {
    return test();}

    public String test(){
    Properties props = System.getProperties();
    System.setProperty("java.rmi.server.codebase", "file:/Users/server_workspace/Dummy/server.policy");

    String test = "test";
    if (System.getSecurityManager() == null) {
    System.setSecurityManager(new SecurityManager());
    }

    try {
    String name = "Compute";
    Registry registry = LocateRegistry.getRegistry("localhost",1099);
    I_Finder f = (I_Finder) registry.lookup(name);
    test = f.search("hello world");
    }
    return test;
    }
    }

    Wenn ich diese Applikation auf dem Server laufen lassen, kriege ich folgende Fehlermeldungen:

    java.security.AccessControlException: access denied (java.net.SocketPermission localhost:1099 connect,resolve)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.lang.SecurityManager.checkConnect(SecurityManager.java:1034)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory$AsyncConnector.<init>(RMIMasterSocketFactory.java:377 )
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:153)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at de.cellfinder.client.Client.test(Client.java:38)
    at de.cellfinder.client.Client.sayPlainTextHello(Client.java:22)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvok er._dispatch(AbstractResourceMethodDispatchProvider.java:185)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaM ethodDispatcher.java:75)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:146 9)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:140 0)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349 )
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339 )
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:680)
    04.10.2011 18:02:57 org.apache.catalina.loader.WebappClassLoader findClass
    WARNUNG: WebappClassLoader.findClassInternal(com.sun.jersey.core.spi.factory.ResponseImpl) security exception: access denied (java.io.FilePermission /Users/stefaniewerner/Documents/server_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Dummy_Client/WEB-INF/classes/com/sun/jersey/core/spi/factory/ResponseImpl.class read)
    java.security.AccessControlException: access denied (java.io.FilePermission /Users/server_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Dummy_Client/WEB-INF/classes/com/sun/jersey/core/spi/factory/ResponseImpl.class read)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
    at java.io.File.exists(File.java:731)
    at org.apache.naming.resources.FileDirContext.file(FileDirContext.java:785)
    at org.apache.naming.resources.FileDirContext.lookup(FileDirContext.java:206)
    at org.apache.naming.resources.ProxyDirContext.lookup(ProxyDirContext.java:299)
    at org.apache.catalina.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2892)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2753)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvok er._dispatch(AbstractResourceMethodDispatchProvider.java:187)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaM ethodDispatcher.java:75)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:146 9)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:140 0)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349 )
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339 )
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:680)
    04.10.2011 18:02:57 org.apache.catalina.core.StandardWrapperValve invoke
    SCHWERWIEGEND: Servlet.service() for servlet Jersey REST Service threw exception
    java.lang.ClassNotFoundException: com.sun.jersey.core.spi.factory.ResponseImpl
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvok er._dispatch(AbstractResourceMethodDispatchProvider.java:187)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaM ethodDispatcher.java:75)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:146 9)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:140 0)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349 )
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339 )
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:680)
    04.10.2011 18:02:57 org.apache.catalina.connector.CoyoteAdapter service
    SCHWERWIEGEND: An exception or error occurred in the container during the request processing
    java.security.AccessControlException: access denied (java.lang.RuntimePermission setContextClassLoader)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.lang.Thread.setContextClassLoader(Thread.java:1418)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:147)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:680)
    Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.security.AccessControlException: access denied (java.lang.RuntimePermission setContextClassLoader)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.lang.Thread.setContextClassLoader(Thread.java:1418)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.ja va:1657)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)
    at java.lang.Thread.run(Thread.java:680)



    Hat jemand einen Vorschlag für mich oder bin ich mit meiner Implementierung vieleicht komplett auff dem Holzweg?

    Kizuna
     

  2. #2
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Hallo Kizuna
    kannst du den Code bitte in Java-Tags (siehe meine Signatur) und den Stacktrace in Code-Tags schreiben? Dann kann man deinen Code deutlich besser lesen!
    Auf welche Zeilen bezieht sich "Client.java:22" und "Client.java:38" aus deinem Stacktrace?

    Im Stacktrace sehe ich in
    Code :
    1
    2
    
    WARNUNG: WebappClassLoader.findClassInternal(com.sun.jersey.core.spi.factory.ResponseImpl) security exception: access denied (java.io.FilePermission /Users/stefaniewerner/Documents/server_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Dummy_Client/WEB-INF/classes/com/sun/jersey/core/spi/factory/ResponseImpl.class read)
     java.security.AccessControlException: access denied (java.io.FilePermission /Users/server_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Dummy_Client/WEB-INF/classes/com/sun/jersey/core/spi/factory/ResponseImpl.class read)
    , dass deine Anwendung offenbar auf eine Datei nicht lesend zugreifen kann. Existiert diese Datei? Kannst du deiner Anwendung die nötigen Leserechte zuteilen?

    EDIT:
    noch etwas: Hat deine Anwendung genug Rechte, um einen Port zu öffnen?
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  3. #3
    z-mon z-mon ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    43
    java.security.AccessControlException: access denied (java.net.SocketPermission localhost:1099 connect,resolve)
    Scheint mir auf den ersten Blick auch ein Rechteproblem zu sein. Die Fehlermeldung sagt ja schon einiges aus ...
     
    www.itblogging.de - Informationen rund um die Informatik
    Themen: Java, RCP, RAP, Linux, Shell, Ajax, Eclipse, Netzwerk, Security, PHP

Ähnliche Themen

  1. AXIS2-Webservice und PHP-Client
    Von Moritz123 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 27.04.09, 16:04
  2. Webservice Client mit https
    Von Howie85 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 01.06.07, 14:59
  3. Client für Webservice mit Eclipse
    Von heinäääää im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 7
    Letzter Beitrag: 12.10.06, 22:04
  4. Webservice Client in C++ schreiben
    Von Jens Hibbeler im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 13.10.05, 11:52
  5. Webservice Client in C# erstellen
    Von devpeppi im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 03.12.04, 16:16

Stichworte