I need some help understanding how CanDI works with the Startup pattern mentioned in the following tutorial on Caucho's Web site.

http://caucho.com/resin-4.0/examples/ioc-binding/index.xtp#Startup%20Pattern

Here is what the tutorial says:


  Startup Pattern

The |@Startup| annotation marks a bean as initializing on server startup. Because the startup bean is discovered through classpath scanning like the other beans, the initialization is controlled by the startup class itself. In other words, looking at the startup class is sufficient, because it doesn't rely on XML for startup. The startup bean uses the |@PostConstruct| annotation on an initialization method to start initialization code.


I have added the two annotations @Startup and @PostConstruct to the class that I want to load at server initialization time, but when I start Resin, the class is not initialized. My understanding from reading the tutorial is that this is all I should have to do to have the class loaded and initialized. But, it doesn't seem to work. I don't think Resin is scanning the classpath or finding the class in the classpath. Is there more to it than this?

Here is my Java class:
package example;

import javax.annotation.PostConstruct;
import javax.ejb.Startup;
import javax.inject.Inject;

@Startup
public class MyStartupBean {

{
System.out.println("MyStartupBean instance loaded");
}

  @PostConstruct
  public void init()
  {
System.out.println("MyStartupBean.init() ran");
  }
}

This Java class is located in the webapp's WEB-INF/classes folder (in the example package).

I see Resin compiling it, but I don't see the print messages in the stdout log.

Do I need to add something to the resin.xml or the webapp's web-resin.xml file to get it to load?


I did figure out a way to explicitly tell Resin to load the class. I created a resin-web.xml file in my web application with the following statements:

<web-app xmlns="http://caucho.com/ns/resin"; xmlns:ee="urn:java:ee"
        xmlns:example="urn:java:example">
<example:MyStartupBean>
<ee:Startup/>
</example:MyStartupBean>
</web-app>

Now when resin starts, I see the class loading and the init() method is run.

Should this be required?

Thanks for any help.

Keith




--
-----------------------------------------------------------------
Keith Fetterman                        Direct: 206-319-9434
Mariner Supply, Inc.                   206-780-5670
http://www.go2marine.com               kfetter...@go2marine.com

http://www.boatersline.com


_______________________________________________
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest

Reply via email to