OK, so you would create your MBean service class as described in the
documentation links in my first post.
- create an interface for your MBean that extends extends
org.jboss.system.ServiceMBean
-create your MBean class that extends extends
org.jboss.system.ServiceMBeanSupport and implements your interface from step one
-put all the logic/methods that want to use in this class
-load your MBean service using a *-service.xml file, which specifies the NAME
of the service you have created. This file can either be right under the
deploy directory or in the META-INF dir inside your .sar application. The
service should then show up in your jmx console under this name. Now you can
inject the service using the code that you quoted.
For example, here is the code in the
jboss-portal.sar/META-INF/jboss-service.xml file that loads the UserModule
portlet as a service in your example
| <mbean>
| code="org.jboss.portal.identity.db.UserModuleImpl"
| name="portal:service=Module,type=User"
| ...
| </mbean>
|
The code= is the name of the class, so you would use your classe's fully
qualified name.
The name= is the name you want to call your service. I'm not sure if you have
to start the name with portal: for it to work with a portlet, but you can try
with a different name if you want.
The basic structure of the name should be:
{app-name]:service={somename},type={somename}
So your descriptor would look something like:
| <mbean>
| code="org.mypackage.DAOClass"
| name="portal:service:Module,type=DAOAccess"
| </mbean>
|
Then you can inject the service in your portlet with this code in your
jboss-portlet.xml file
| <portlet-app>
| <service-name>DAOAccessModule</service-name>
| <service-class>org.mypackage.DAOClass</service-class>
| <service-ref>:service-Module,type=DAOAccess</service-ref>
| </portlet-app>
|
(if you use a name other than portal for start of your service name, you should
include it in the servive-ref, not sure about if that works or not)
So, the ref and class are the same as set in the service.xml, the name you will
use in your portlet to get the service from the context
| DAOClass dao = (DAOClass)
getPortletContext().getAttribute("DAOAccessModule");
| dao.getConection() ....
|
I should mention that I have never done this yet, I have only created a
service, I haven't injected it in a portlet before. But this is how the docs
say to do it.
If you use the ejb3 method to create your MBean you simply create a class and
add the @Service annotation with the name of your service
(portal:Service=Module,type=DAOAccess) and the @Management annotation with the
interface describing the methods, etc that you want to expose in the service in
the jmx-console. That is explained in the link in my first post. Then you
inject the service the same way as in your example code.
I hope this helps.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3968809#3968809
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3968809
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user