Joche, Do you have any input on this matter? Does it seem to be a misconfiguration or a bug?
Regards, Jimisola Jimisola Laursen wrote: > > Hi! > > I am trying to send a file over XMLRPC using an byte array (byte[]), but > an exception is thrown when content length optional is set to true. > At first I thought it had to do with the byte array, but I this exception > with a simple ping/echo method as well. > > I am using PropertyHandlerMapping on the server-side and a Proxy solution > on the Agent side. > I've used this same setup before, but I had to recreate the test from > scratch so I am thinking that I might have missed out on something. > But since it works when content length optional is set to false I have my > doubts. > > Regards, > Jimisola > > These are the outputs that I get: > > Client: > > [Fatal Error] :2:6: The processing instruction target matching > "[xX][mM][lL]" is not allowed. > Exception in thread "main" java.lang.reflect.UndeclaredThrowableException > at $Proxy0.echo(Unknown Source) > at xmlrpctest.Client.main(Client.java:33) > Caused by: org.apache.xmlrpc.client.XmlRpcClientException: Failed to parse > servers response: The processing instruction target matching > "[xX][mM][lL]" is not allowed. > at > org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:177) > at > org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:145) > at > org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:94) > at > org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:53) > at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:166) > at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:136) > at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:125) > at > org.apache.xmlrpc.client.util.ClientFactory$1.invoke(ClientFactory.java:104) > ... 2 more > > Server: > lFatal Error] :1:1: Content is not allowed in prolog. > > The code: > > package xmlrpctest; > > import java.io.IOException; > import java.net.InetAddress; > > import org.apache.xmlrpc.XmlRpcException; > import org.apache.xmlrpc.server.PropertyHandlerMapping; > import org.apache.xmlrpc.server.XmlRpcServer; > import org.apache.xmlrpc.server.XmlRpcServerConfigImpl; > import org.apache.xmlrpc.webserver.WebServer; > > public class Server > { > public static void main(String[] args) throws XmlRpcException, > IOException > { > WebServer webServer = new WebServer(8080, > InetAddress.getByName("localhost")); > > XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer(); > > // use reflection for (dynamic) mapping > PropertyHandlerMapping phm = new PropertyHandlerMapping(); > > // add handler - using full name for use by dynamic proxy > phm.addHandler(TestRPC.class.getName(), TestRPCImpl.class); > xmlRpcServer.setHandlerMapping(phm); > > XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) > xmlRpcServer.getConfig(); > serverConfig.setEnabledForExtensions(true); > serverConfig.setContentLengthOptional(true); > > webServer.start(); > } > } > > package xmlrpctest; > > import java.io.FileInputStream; > import java.net.URL; > > import org.apache.xmlrpc.client.XmlRpcClient; > import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; > import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory; > import org.apache.xmlrpc.client.util.ClientFactory; > > public class Client > { > public static void main(String[] args) throws Exception > { > URL url = new URL("http://localhost:8080/RPC2"); > > XmlRpcClientConfigImpl clientConfig = new > XmlRpcClientConfigImpl(); > > clientConfig.setServerURL(url); > clientConfig.setEnabledForExtensions(true); > clientConfig.setContentLengthOptional(true); > XmlRpcClient client = new XmlRpcClient(); > > // use Commons HttpClient as transport > client.setTransportFactory(new > XmlRpcCommonsTransportFactory(client)); > // set configuration > client.setConfig(clientConfig); > > // make a call using dynamic proxy > ClientFactory factory = new ClientFactory(client); > TestRPC testRPC = (TestRPC) factory.newInstance(TestRPC.class); > > System.out.println(testRPC.echo("ping")); > > /* > FileInputStream fis = new FileInputStream("/tmp/java.txt"); > byte[] ba = new byte[fis.available()]; > > fis.read(ba); > fis.close(); > int length = testRPC.upload(ba); > > System.out.println(length); > */ > } > } > > package xmlrpctest; > > import org.apache.xmlrpc.XmlRpcException; > > public interface TestRPC > { > int upload(byte[] data) throws XmlRpcException, Exception; > > String echo(String s); > > } > > package xmlrpctest; > > import java.io.FileOutputStream; > > import org.apache.xmlrpc.XmlRpcException; > > public class TestRPCImpl implements TestRPC > { > > public int upload(byte[] data) throws XmlRpcException, Exception > { > FileOutputStream fos = new FileOutputStream("/tmp/java.txt.out"); > fos.write(data); > fos.close(); > > return data.length; > } > > public String echo(String s) > { > System.out.println("Returning: " + s); > return s; > } > } > > pom.xml: > <?xml version="1.0" encoding="UTF-8"?><project> > <modelVersion>4.0.0</modelVersion> > <groupId>test</groupId> > <artifactId>test</artifactId> > <version>0.0.1</version> > <description></description> > <dependencies> > <dependency> > <groupId>org.apache.xmlrpc</groupId> > <artifactId>xmlrpc-common</artifactId> > <version>3.0</version> > </dependency> > <dependency> > <groupId>org.apache.xmlrpc</groupId> > <artifactId>xmlrpc-client</artifactId> > <version>3.0</version> > </dependency> > <dependency> > <groupId>org.apache.xmlrpc</groupId> > <artifactId>xmlrpc-server</artifactId> > <version>3.0</version> > </dependency> > <dependency> > <artifactId>commons-codec</artifactId> > <groupId>commons-codec</groupId> > <version>1.3</version> > </dependency> > > <dependency> > <artifactId>commons-httpclient</artifactId> > <groupId>commons-httpclient</groupId> > <version>3.0.1</version> > </dependency> > > <dependency> > <artifactId>commons-lang</artifactId> > <groupId>commons-lang</groupId> > <version>2.1</version> > </dependency> > </dependencies> > </project> > -- View this message in context: http://www.nabble.com/Exception-thrown-when-setting-content-length-optional-to-true-tf2268435.html#a6362347 Sent from the Apache Xml-RPC - Dev mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]