Java classes used in JavaRPC application must be declared in a security element. Classes not defined in a security element are not allowed to be accessed or instantiated. The format of the security element looks like:
<security> <allow> <pattern>CLASS1</pattern> <pattern>CLASS2</pattern> ... <pattern>CLASSN</pattern> </allow> </security>
Each <pattern> is a regular expression.
<security> <allow> <pattern>^org\.openlaszlo</pattern> </allow> </security>
A javarpc object who's class is not declared in a security tag will result in a load error.
<canvas debug="true" height="300">
<debug x="10" y="40" height="240"/>
<security>
<allow>
<pattern>^examples\.ConstructExample</pattern>
</allow>
</security>
<!-- See $LPS_HOME/WEB-INF/classes/examples/ConstructExample.java for java
source. -->
<javarpc name="ce" scope="session" remoteclassname="examples.ConstructExample" createargs="[1]" autoload="false">
<handler name="onerror" args="err">
Debug.debug("onerror: %w", err)
</handler>
<handler name="onload">
Debug.debug("proxy loaded: %w", this.proxy);
</handler>
</javarpc>
<!-- See $LPS_HOME/WEB-INF/classes/examples/TypesExample.java for java
source. This will fail because class is not declared in security
pattern-->
<javarpc name="te" scope="session" remoteclassname="examples.TypesExample" autoload="false">
<handler name="onerror" args="err">
Debug.debug("onerror: %w", err)
</handler>
<handler name="onload">
Debug.debug("proxy loaded: %w", this.proxy);
</handler>
</javarpc>
<view x="10" y="10" layout="axis: x; spacing: 5">
<button text="Load ConstructExample (allowed)" onclick="canvas.ce.load()"/>
<button text="Load TypesExample (not allowed)" onclick="canvas.te.load()"/>
</view>
</canvas>
See Also:
Copyright © 2002-2010 Laszlo Systems, Inc. All Rights Reserved. Unauthorized use, duplication or distribution is strictly prohibited. This is the proprietary information of Laszlo Systems, Inc. Use is subject to license terms.