6 Replies Latest reply: Dec 15, 2006 12:28 PM by Kabir Khan RSS

Obscure error message

Fábio Costa Newbie

The pointcut

 <pointcut name="initSystem"
 expr="call(* controllers.HealthWatcherFacade->new(..))" />


generates the error

org.jboss.aop.pointcut.ast.PointcutExpressionParser$LookaheadSuccess
 at org.jboss.aop.pointcut.ast.PointcutExpressionParser.<init>(PointcutExpressionParser.java:3126)
 at org.jboss.aop.pointcut.PointcutExpression.<init>(PointcutExpression.java:61)
 at org.jboss.aop.AspectXmlLoader.deployPointcut(AspectXmlLoader.java:639)
 at org.jboss.aop.AspectXmlLoader.deployTopElements(AspectXmlLoader.java:1030)
 at org.jboss.aop.AspectXmlLoader.deployXML(AspectXmlLoader.java:886)
 at org.jboss.aop.AspectXmlLoader.deploy(AspectXmlLoader.java:1206)
 at org.jboss.aop.AspectXmlLoader.deployXML(AspectXmlLoader.java:1232)
 at org.jboss.aop.deployment.AspectDeployer.create(AspectDeployer.java:167)
 at org.jboss.deployment.MainDeployer.create(MainDeployer.java:969)
 at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:818)
 at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
 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:585)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
 at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
 at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
 at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
 at $Proxy8.deploy(Unknown Source)
 at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
 at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
 at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
 at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)
 at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
 at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
 at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
 at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
 at $Proxy0.start(Unknown Source)
 at org.jboss.system.ServiceController.start(ServiceController.java:417)
 at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
 at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
 at $Proxy4.start(Unknown Source)
 at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
 at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
 at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
 at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
 at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:766)
 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:585)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
 at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
 at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
 at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
 at $Proxy5.deploy(Unknown Source)
 at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
 at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
 at org.jboss.Main.boot(Main.java:200)
 at org.jboss.Main$1.run(Main.java:490)



I don't understand the problem


  • 1. Re: Obscure error message
    Fábio Costa Newbie

    Only to complement (xml complete):

    
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <aop>
     <aspect class="aspects.distribution.HealthWatcherServerSideAspect"
     scope="PER_VM" />
    
     <aspect class="aspects.distribution.HealthWatcherClientSideAspect"
     scope="PER_VM" />
    
    
    
     <aspect class="aspects.dataManagement.nonpersistent.DataCollectionNonPersistent"
     scope="PER_VM" />
    
    
    
     <aspect class="aspects.dataManagement.persistent.DataCollectionPersistent"
     scope="PER_VM" />
    
    
    
    
     <aspect class="aspects.dataManagement.persistent.PersistenceControlHealthWatcher"
     scope="PER_VM" />
    
     <pointcut
     expr="execution(public void gui.servlets.ServletWebServer->init(javax.servlet.ServletConfig))"
     name="facadeMainExecution" />
    
     <bind pointcut="facadeMainExecution">
     <advice
     aspect="aspects.distribution.HealthWatcherServerSideAspect"
     name="beforeFacadeMainExecution" />
     </bind>
    
    
     <pointcut name="facadeCallers"
     expr="within($instanceof{javax.servlet.http.HttpServlet})" />
    
    <!--
     <pointcut name="facadeCalls"
     expr="call(* controllers.HealthWatcherFacade->*(..)) AND !call(static * controllers.HealthWatcherFacade->*(..))" />
    
    -->
    
     <pointcut name="facadeCalls"
     expr="call(* $instanceof{aspects.distribution.rmi.IRemoteFacade}->*(..)) AND !call(static * $instanceof{aspects.distribution.rmi.IRemoteFacade}->*(..))" />
    
     <bind pointcut="facadeCallers AND facadeCalls">
     <advice
     aspect="aspects.distribution.HealthWatcherClientSideAspect"
     name="aroundFacadeLocalCalls" />
     </bind>
    
    
     <pointcut name="recordsCreation"
     expr="within($instanceof{aspects.dataManagement.util.SystemRecord}) AND !within($instanceof{AbstractDataCollectionCustomization})" />
    
     <introduction
     expr="class(complaint.ComplaintRecord)
     OR class(healthGuide.HealthUnitRecord)
     OR class(healthGuide.MedicalSpecialtyRecord)
     OR class(employee.EmployeeRecord)
     OR class(complaint.DiseaseRecord)">
     <mixin>
     <interfaces>
     aspects.dataManagement.util.SystemRecord
     </interfaces>
     <class>aspects.dataManagement.util.SystemRecordImpl</class>
     <construction>
     new aspects.dataManagement.util.SystemRecordImpl()
     </construction>
     </mixin>
     </introduction>
    
     <bind pointcut="recordsCreation">
     <advice
     aspect="aspects.dataManagement.nonpersistent.DataCollectionNonPersistent"
     name="aroundRecordsCreation" />
    
     <advice
     aspect="aspects.dataManagement.persistent.DataCollectionPersistent"
     name="aroundRecordsCreation" />
     </bind>
    
    
     <!--
     <pointcut name="connectionOperations"
     expr="call(void IPersistenceMechanism->connect()) OR
     call(void IPersistenceMechanism->disconnect())" />
    
    -->
    
     <pointcut name="initSystem"
     expr="call(* controllers.HealthWatcherFacade->new(..))" />
    
    
     <pointcut name="obtainPmInstance"
     expr="call(* aspects.dataManagement.dataCollections.rdbms.PersistenceMechanismRDBMS->getInstance(..))" />
    
     <bind pointcut="initSystem">
     <advice
     aspect="aspects.dataManagement.persistent.PersistenceControlHealthWatcher"
     name="aroundRecordsCreation" />
     </bind>
    
    </aop>
    
    
    
    


  • 2. Re: Obscure error message
    Flavia Rainone Newbie

    You need to remove the wildcard from the pointcut expression. When JBoss AOP sees this wildcard, it thinks it is the return type value. And then it doesn't validate the "new" keyword, because this cannot be used with return type values.

  • 3. Re: Obscure error message
    Fábio Costa Newbie

    How I inform that the class can be public or private?

  • 4. Re: Obscure error message
    Flavia Rainone Newbie

    I don't think there is a way to do this. Currently, the class expressions are all based on the name of the class, and not on its accessibility from other classes.
    However, you can specify the constructor to be private or public. But you put a wildcard in the place of the constructor accessibility constraint, since this will be interpreted as a return type, as I've told you.

  • 5. Re: Obscure error message
    Fábio Costa Newbie

    ok, I will not use modifier of access in pointcut

  • 6. Re: Obscure error message
    Kabir Khan Master

     

    "flavia.rainone" wrote:
    I don't think there is a way to do this. Currently, the class expressions are all based on the name of the class, and not on its accessibility from other classes.


    Yes, we do not care if the class is private/public