You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Ma...@nokia.com on 2002/12/17 12:00:34 UTC
help with digester in weblogic
hi all,
i have downloaded digester 1.3 and i would like to use
it inside my application in weblogic 5.1.
i have written following XML file
<?xml version="1.0"?>
<myServices>
<serviceGroup name="My Personal Data">
<service name="Current Position">
<joltservice>
<jolt name="Current1" isHB="true"/>
<jolt name="Current2" isHB="true"/>
</joltservice>
<configtool>
<config name="CurrentPos"/>
<config name="DateSpec"/>
</configtool>
<field name="ADDRESS_CONAME"/>
<field name="ADDRESS_NAMEOFCOUNTRY"/>
<field name="ADDRESS_EMPLOYEENO"/>
</service>
</serviceGroup>
</myServices
for this XML file, i have written following classes part
of the com.xml package
- MyServices
- ServiceGroup
- Service
- JoltService
- Jolt
- ConfigTool
- Config
- Field
i am using this simple class for getting servicegroups/fields etc
based on rules
public class DigesterTest {
private Digester digester;
private String configFile;
public DigesterTest(String fileName) {
digester = new Digester();
digester.setValidating(false);
setRules(digester);
configFile = fileName;
}
/**
* Set the rules to be used to parse
* the XML file.
*/
private void setRules(Digester digester) {
/** Whenever we need to change rules, we must
* edit following section.
*/
// Adding rules to be used when <myService> element is encountered.
digester.addObjectCreate( "myServices", MyServices.class );
// Adding rules to be used when <serviceGroup> element is encountered.
digester.addObjectCreate( "myServices/serviceGroup", ServiceGroup.class );
digester.addSetProperties( "myServices/serviceGroup", "name", "name" );
digester.addSetNext("myServices/serviceGroup", "addServiceGroup" );
// Adding rules to be used when <service> element is encountered.
digester.addObjectCreate("myServices/serviceGroup/service", Service.class);
digester.addSetProperties("myServices/serviceGroup/service","name", "name");
digester.addSetNext("myServices/serviceGroup/service" , "addService");
}
/**
* @return all services available in the
* configuration file.
*/
public MyServices getAllServices() throws Exception {
MyServices mp = (MyServices)digester.parse("myProfile.xml");
return mp;
}
but when i run this program in a servlet under weblogic 5.1 i got following exception
Dec 17, 2002 12:50:43 PM org.apache.commons.beanutils.MethodUtils getMatchingAcc
essibleMethod
WARNING: Cannot setAccessible on method. Therefore cannot use jvm access bug wor
karound.
java.security.AccessControlException: access denied (java.lang.reflect.ReflectPe
rmission suppressAccessChecks)
at java.security.AccessControlContext.checkPermission(AccessControlConte
xt.java:270)
at java.security.AccessController.checkPermission(AccessController.java:
401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.jav
a:107)
at org.apache.commons.beanutils.MethodUtils.getMatchingAccessibleMethod(
MethodUtils.java:578)
at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.jav
a:243)
at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:260)
at org.apache.commons.digester.Digester.endElement(Digester.java:1036)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXPar
ser.java:568)
at org.apache.xerces.impl.XMLNamespaceBinder.endElement(XMLNamespaceBind
er.java:646)
at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDVal
idator.java:3006)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator
.java:930)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElemen
t(XMLDocumentFragmentScannerImpl.java:1145)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(
XMLDocumentFragmentScannerImpl.java:988)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent
Dispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1446)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XM
LDocumentFragmentScannerImpl.java:333)
at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardP
arserConfiguration.java:525)
at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardP
arserConfiguration.java:581)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:147)
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.j
ava:1157)
at org.apache.commons.digester.Digester.parse(Digester.java:1552)
at com.xml.DigesterTest.getAllServices(Unknown Source)
at com.nokia.servlet.MyProfileServlet.init(Unknown Source)
at weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubIm
pl.java:474)
at weblogic.servlet.internal.ServletStubImpl.createInstances(ServletStub
Impl.java:432)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubI
mpl.java:421)
at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.
java:181)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:118)
at weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletCon
textImpl.java:761)
at weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletCon
textImpl.java:708)
at weblogic.servlet.internal.ServletContextManager.invokeServlet(Servlet
ContextManager.java:252)
at weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.jav
a:346)
at weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:246)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:135)
However, if i run the DigesterTest class as standalone, everything works fine.
can anyone help me?
thanx in advance and regards
marco
Re: help with digester in weblogic
Posted by robert burrell donkin <ro...@blueyonder.co.uk>.
hi marco
i think i can give you an explanation. weblogic runs under restrictive
security environment. this prevents one of the pre-java 1.4 reflection bug
workarounds from working. what you can see should be just a warning
(rather than an error).
digester should still run fine after this warning but if you're running
java 1.3 and things break when you run in weblogic, then you might need to
upgrade since the reflection code in java 1.4 has far fewer bugs in.
unfortunately, the last release of beanutils repeats the warning message
every time. you'd be well advised to upgrade to a recent nightly build -
or CVS HEAD - of beanutils since this will only issue the warning once.
- robert
On Tuesday, December 17, 2002, at 11:00 AM, <Ma...@nokia.com>
wrote:
> hi all,
> i have downloaded digester 1.3 and i would like to use
> it inside my application in weblogic 5.1.
>
> i have written following XML file
>
> <?xml version="1.0"?>
> <myServices>
> <serviceGroup name="My Personal Data">
> <service name="Current Position">
> <joltservice>
> <jolt name="Current1" isHB="true"/>
> <jolt name="Current2" isHB="true"/>
> </joltservice>
> <configtool>
> <config name="CurrentPos"/>
> <config name="DateSpec"/>
> </configtool>
> <field name="ADDRESS_CONAME"/>
> <field name="ADDRESS_NAMEOFCOUNTRY"/>
> <field name="ADDRESS_EMPLOYEENO"/>
> </service>
> </serviceGroup>
> </myServices
>
>
> for this XML file, i have written following classes part
> of the com.xml package
> - MyServices
> - ServiceGroup
> - Service
> - JoltService
> - Jolt
> - ConfigTool
> - Config
> - Field
>
>
> i am using this simple class for getting servicegroups/fields etc
> based on rules
>
>
> public class DigesterTest {
>
> private Digester digester;
> private String configFile;
>
> public DigesterTest(String fileName) {
> digester = new Digester();
> digester.setValidating(false);
> setRules(digester);
> configFile = fileName;
> }
>
> /**
> * Set the rules to be used to parse
> * the XML file.
> */
> private void setRules(Digester digester) {
> /** Whenever we need to change rules, we must
> * edit following section.
> */
>
> // Adding rules to be used when <myService> element is
> encountered.
> digester.addObjectCreate( "myServices", MyServices.class );
> // Adding rules to be used when <serviceGroup> element is
> encountered.
> digester.addObjectCreate( "myServices/serviceGroup", ServiceGroup.
> class );
> digester.addSetProperties( "myServices/serviceGroup", "name",
> "name" );
> digester.addSetNext("myServices/serviceGroup", "addServiceGroup"
> );
>
> // Adding rules to be used when <service> element is encountered.
> digester.addObjectCreate("myServices/serviceGroup/service",
> Service.class);
> digester.addSetProperties("myServices/serviceGroup/service","name"
> , "name");
> digester.addSetNext("myServices/serviceGroup/service" ,
> "addService");
>
> }
>
> /**
> * @return all services available in the
> * configuration file.
> */
> public MyServices getAllServices() throws Exception {
> MyServices mp = (MyServices)digester.parse("myProfile.xml");
> return mp;
> }
>
> but when i run this program in a servlet under weblogic 5.1 i got
> following exception
>
> Dec 17, 2002 12:50:43 PM org.apache.commons.beanutils.MethodUtils
> getMatchingAcc
> essibleMethod
> WARNING: Cannot setAccessible on method. Therefore cannot use jvm access
> bug wor
> karound.
> java.security.AccessControlException: access denied
> (java.lang.reflect.ReflectPe
> rmission suppressAccessChecks)
> at
> java.security.AccessControlContext.checkPermission(AccessControlConte
> xt.java:270)
> at
> java.security.AccessController.checkPermission(AccessController.java:
> 401)
> at java.lang.SecurityManager.checkPermission(SecurityManager.java:
> 542)
> at
> java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.jav
> a:107)
> at
> org.apache.commons.beanutils.MethodUtils.getMatchingAccessibleMethod(
> MethodUtils.java:578)
> at
> org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.jav
> a:243)
> at
> org.apache.commons.digester.SetNextRule.end(SetNextRule.java:260)
> at org.apache.commons.digester.Digester.endElement(Digester.java:
> 1036)
> at
> org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXPar
> ser.java:568)
> at
> org.apache.xerces.impl.XMLNamespaceBinder.endElement(XMLNamespaceBind
> er.java:646)
> at
> org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDVal
> idator.java:3006)
> at
> org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator
> .java:930)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElemen
> t(XMLDocumentFragmentScannerImpl.java:1145)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(
> XMLDocumentFragmentScannerImpl.java:988)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent
> Dispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1446)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XM
> LDocumentFragmentScannerImpl.java:333)
> at
> org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardP
> arserConfiguration.java:525)
> at
> org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardP
> arserConfiguration.java:581)
> at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:147)
> at
> org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.j
> ava:1157)
> at org.apache.commons.digester.Digester.parse(Digester.java:1552)
> at com.xml.DigesterTest.getAllServices(Unknown Source)
> at com.nokia.servlet.MyProfileServlet.init(Unknown Source)
> at
> weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubIm
> pl.java:474)
> at
> weblogic.servlet.internal.ServletStubImpl.createInstances(ServletStub
> Impl.java:432)
> at
> weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubI
> mpl.java:421)
> at
> weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.
> java:181)
> at
> weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
> pl.java:118)
> at
> weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletCon
> textImpl.java:761)
> at
> weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletCon
> textImpl.java:708)
> at weblogic.servlet.internal.ServletContextManager.invokeServlet(
> Servlet
> ContextManager.java:252)
> at
> weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.jav
> a:346)
> at
> weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:246)
>
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:135)
>
>
> However, if i run the DigesterTest class as standalone, everything works
> fine.
>
> can anyone help me?
>
> thanx in advance and regards
> marco
>
> --
> To unsubscribe, e-mail: <mailto:commons-user-unsubscribe@jakarta.apache.
> org>
> For additional commands, e-mail: <mailto:commons-user-help@jakarta.apache.
> org>
>