You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Maarten Billemont (JIRA)" <ji...@apache.org> on 2008/10/01 09:33:44 UTC
[jira] Resolved: (WICKET-1848) IllegalArgumentException while
invoking method on injected proxy object (object is not an instance of
declaring class)
[ https://issues.apache.org/jira/browse/WICKET-1848?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maarten Billemont resolved WICKET-1848.
---------------------------------------
Resolution: Invalid
Caused by two EJBs which were given the same JNDI binding.
> IllegalArgumentException while invoking method on injected proxy object (object is not an instance of declaring class)
> ----------------------------------------------------------------------------------------------------------------------
>
> Key: WICKET-1848
> URL: https://issues.apache.org/jira/browse/WICKET-1848
> Project: Wicket
> Issue Type: Bug
> Components: wicket, wicket-extensions
> Affects Versions: 1.4-M3
> Reporter: Maarten Billemont
> Assignee: Igor Vaynberg
>
> The problem description:
> I have some EJB service beans which I'd like to use in my wicket application. The service beans implement @Local interfaces which all have a public static final String BINDING field that contains the JNDI binding of the bean that implements them. I use this BINDING field to lookup the bean and inject it into my Wicket pages using the JavaEEComponentInjector.
> The problem, however, occurs when accessing methods of these injected bean proxy objects. I'm not entirely sure what the cause is and I've noticed the issue to be rather unpredictable - probably due to the fact that I really don't get what's going wrong.
> In any case; for some reason when I invoke methods on my proxy objects, Wicket's proxy object's reflection seems unable to actually perform the call on the target object. I know far too little of how proxy objects work internally to understand what exactly is going on and what exactly might be failing to give any more details than this.
> I'm not sure whether this is an issue in wicket-ioc or wicket-contrib-javaee though seeing as the exception originates from within LazyInitProxyFactory I'm betting on wicket-ioc (which isn't in the list of components of this JIRA?)
> The exception:
> org.apache.wicket.WicketRuntimeException: Method onFormSubmitted of interface org.apache.wicket.markup.html.form.IFormSubmitListener targeted at component [Marku
> at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:193)
> at org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
> at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
> at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1188)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1265)
> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1366)
> at org.apache.wicket.RequestCycle.request(RequestCycle.java:499)
> at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:387)
> at org.apache.wicket.protocol.http.WicketServlet.doPost(WicketServlet.java:145)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at net.link.safeonline.sdk.auth.filter.ContainerLoginFilter.doFilter(ContainerLoginFilter.java:70)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at net.link.safeonline.sdk.auth.filter.JAASLoginFilter.doFilter(JAASLoginFilter.java:93)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
> at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
> at java.lang.Thread.run(Thread.java:595)
> Caused by: java.lang.reflect.InvocationTargetException
> 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.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:182)
> ... 34 more
> Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
> 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.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
> at org.apache.wicket.proxy.$Proxy1013.createAccount(Unknown Source)
> at net.link.safeonline.demo.bank.webapp.NewAccountPage$AccountForm.onSubmit(NewAccountPage.java:74)
> at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1347)
> at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:797)
> ... 39 more
> The (relevant) Wicket code:
> public class AccountApplication extends WebApplication {
> @Override
> protected void init() {
> addComponentInstantiationListener(new JavaEEComponentInjector(this,
> new IJndiNamingStrategy() {
> private final StandardJndiNamingStrategy defaultStrategy = new StandardJndiNamingStrategy();
> @SuppressWarnings("unchecked")
> public String calculateName(String ejbName, Class ejbType) {
> try {
> Field bindingField = ejbType.getDeclaredField("BINDING");
> Object binding = bindingField.get(null);
> if (binding != null)
> return binding.toString();
> } catch (Exception e) {
> ...
> }
> return this.defaultStrategy.calculateName(ejbName, ejbType);
> }
> }));
> }
> ...
> }
> public abstract class LayoutPage extends WebPage {
> @EJB
> transient AccountService accountService;
> ...
> }
> public class NewAccountPage extends LayoutPage {
> ...
> class AccountForm extends Form<String> {
> ...
> @Override
> protected void onSubmit() {
> accountService.createAccount(...);
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.