Uploaded image for project: 'XML-RPC'
  1. XML-RPC
  2. XMLRPC-178

ClassCastException in client proxy cannot cast Ljava.lang.Object to Ljava.lang.String

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Invalid
    • 3.1.2
    • None
    • Releases
    • None
    • Windows Server 2003

    Description

      I have a fairly simple client server application. One of my exposed server methods returns a String[]. I am getting a ClassCastException on the client side when getting the result. The class cast exception occurs in ClientFactory.class in the newInstance function. I am stepping through the code, and it happens on the line "return typeConverter.convert(result);". Stepping into this function hasn't really helped as it causes the ClassCastException. I am not sure what the problem is, on the server side I have debugged and determined that my function is indeed returning a String[] as it should be, but for some reason when it comes over to the client side there is a problem. I can post you the stack trace:

      Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
      at $Proxy1.getInstances(Unknown Source)
      at com.rsa.grinderbot.controller.perfmon.WindowsProxy.getInstances(WindowsProxy.java:46) -> this is the proxy object calling my server's function
      at com.rsa.grinderbot.controller.perfmon.WindowsStats.<init>(WindowsStats.java:37)
      at com.rsa.grinderbot.controller.perfmon.PerformanceMonitor.<init>(PerformanceMonitor.java:33)
      at com.rsa.grinderbot.controller.Controller.run(Controller.java:268)
      at com.rsa.grinderbot.controller.Controller.main(Controller.java:333)

      Here is my constructor that creates the proxy object using the client factory.

      public WindowsProxy(Server server) {
      this.server = server;
      XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
      try

      { config.setServerURL(new URL("http://" + server.getHostname() + ":" + server.getPort() + "/xmlrpc")); config.setReplyTimeout(0); config.setConnectionTimeout(0); XmlRpcClient client = new XmlRpcClient(); client.setConfig(config); ClientFactory factory = new ClientFactory(client); windows = (WindowsServerAPI) factory.newInstance(WindowsServerAPI.class); }

      catch (MalformedURLException e)

      { //TODO log4j e.printStackTrace(); }

      }

      Attachments

        Activity

          People

            jochen@apache.org Jochen Wiedmann
            coopstah13 Chris Cooper
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: