[JBoss Remoting Development] - Remoting 3: Builder pattern for service registration
by david.lloyd@jboss.com
I was looking at service registration and thought that it might be better/more user-friendly to switch this to use the builder pattern to construct the services.
Compare:
| final Registration handle = endpoint.serviceBuilder()
| .setRequestType(String.class).setReplyType(String.class)
| .setGroupName("main").setServiceType("simple.rot13")
| .setClientListener(new StringRot13ClientListener())
| .register();
|
with:
| final LocalServiceConfiguration<String, String> config =
| LocalServiceConfiguration.create(new StringRot13ClientListener(), String.class, String.class);
| config.setGroupName("main");
| config.setServiceType("simple.rot13");
| final Registration handle = endpoint.registerService(config);
|
In the latter case, you need to import the LocalServiceConfiguration class, and the create line is very long even if you wrap it. The builder approach just looks cleaner to me. The change is trivial to code, so I'd like to do it unless someone thinks this API is just too ugly.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4262301#4262301
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4262301
16 years, 2 months
[JBoss XML Binding Development] - JBossEntityResolver cannot resolve...
by klowtherjr
Hi all,
I'm using JBoss 4.2.3 GA for my application. When I submit my first request to the web service that has been generated using WsdlToJava (and JAXB), JBoss appears to have an issue. The JBossEntityResolver (and JBossWSEntityResolver) appears to be trying to resolve mappings of classes to namespaces. This goes along fine at first, but then at a certain point it cannot resolve them anywmore and takes a long time to complete the resolution process. Things work fine after that, but the first submission is taking forever and is unacceptable. Here's a sample of when the resolution is working:
2009-10-26 12:38:29,153 DEBUG [org.jboss.ws.core.utils.JBossWSEntityResolver] resolveEntity: [pub=jar:file:/C:/Programs/JBoss/4.2.3.GA/server/myapp/deploy/myapp.ear/lib/myapp-eai.jar!/myapp/OGC/int/eurocontrol/wx/1.1.0/wxBase.xsd,sysid=jar:file:/C:/Programs/JBoss/4.2.3.GA/server/myapp/deploy/myapp.ear/lib/myapp-eai.jar!/myapp/OGC/int/eurocontrol/wx/1.1.0/wxBase.xsd]
|
| 2009-10-26 12:38:29,153 DEBUG [org.jboss.ws.core.utils.JBossWSEntityResolver] resolveEntity: [pub=jar:file:/C:/Programs/JBoss/4.2.3.GA/server/myapp/deploy/myapp.ear/lib/myapp-eai.jar!/myapp/OGC/net/opengis/gml/3.2.1/gml.xsd,sysid=jar:file:/C:/Programs/JBoss/4.2.3.GA/server/myapp/deploy/myapp.ear/lib/myapp-eai.jar!/myapp/OGC/net/opengis/gml/3.2.1/gml.xsd]
and then half a second later it isn't for even the same files on the same request:
2009-10-26 12:38:29,622 DEBUG [org.jboss.wsf.framework.DefaultSPIProvider] provide SPI 'class org.jboss.wsf.spi.management.ServerConfigFactory'
|
| 2009-10-26 12:38:29,653 DEBUG [org.jboss.wsf.framework.DefaultSPIProvider] class org.jboss.wsf.spi.management.ServerConfigFactory Implementation: org.jboss.wsf.framework.management.ServerConfigFactoryImpl@9d28a0
|
| 2009-10-26 12:38:29,685 DEBUG [org.jboss.wsf.framework.DefaultSPIProvider] provide SPI 'class org.jboss.wsf.spi.management.ServerConfigFactory'
|
| 2009-10-26 12:38:29,685 DEBUG [org.jboss.wsf.framework.DefaultSPIProvider] class org.jboss.wsf.spi.management.ServerConfigFactory Implementation: org.jboss.wsf.framework.management.ServerConfigFactoryImpl@f47afb
|
| 2009-10-26 12:38:29,716 DEBUG [org.jboss.ws.tools.JavaToXSD] Load schema: http://www.eurocontrol.int/wx/1.1=jar:file:/C:/Programs/JBoss/4.2.3.GA/se...
|
| 2009-10-26 12:38:29,716 DEBUG [org.jboss.ws.core.utils.JBossWSEntityResolver] resolveEntity: [pub=null,sysid=jar:file:/C:/Programs/JBoss/4.2.3.GA/server/myapp/deploy/myapp.ear/lib/myapp-eai.jar!/myapp/OGC/int/eurocontrol/wx/1.1.0/wx.xsd]
|
| 2009-10-26 12:38:29,716 DEBUG [org.jboss.ws.core.utils.JBossWSEntityResolver] resolveEntity: [pub=http://www.eurocontrol.int/wx/1.1,sysid=wxBase.xsd]
|
| 2009-10-26 12:38:29,716 DEBUG [org.jboss.util.xml.JBossEntityResolver] Cannot resolve [publicID=http://www.eurocontrol.int/wx/1.1,systemID=wxBase.xsd]
|
| 2009-10-26 12:38:29,716 DEBUG [org.jboss.ws.core.utils.JBossWSEntityResolver] Cannot resolve entity: [pub=http://www.eurocontrol.int/wx/1.1,sysid=wxBase.xsd]
|
| 2009-10-26 12:38:29,825 DEBUG [org.jboss.ws.core.utils.JBossWSEntityResolver] resolveEntity: [pub=http://www.opengis.net/gml/3.2,sysid=../../../../net/opengis/gml/3.2....]
|
| 2009-10-26 12:38:29,825 DEBUG [org.jboss.util.xml.JBossEntityResolver] Cannot resolve [publicID=http://www.opengis.net/gml/3.2,systemID=../../../../net/opengis/...]
|
| 2009-10-26 12:38:29,825 DEBUG [org.jboss.ws.core.utils.JBossWSEntityResolver] Cannot resolve entity: [pub=http://www.opengis.net/gml/3.2,sysid=../../../../net/opengis/gml/3.2....]
I can see that the publicId and the systemId values are different for the ones that aren't resolving, but I don't know why that is. Any help would be appreciated. Is this an issue with the JavaToXSD? I see that in the log entry above where the resolution problems start.
Thanks,
Ken
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4262260#4262260
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4262260
16 years, 2 months
[JBoss Microcontainer Development POJO Server] - Re: AS weld-int
by kabir.khan@jboss.com
"alesj" wrote : "kabir.khan(a)jboss.com" wrote :
| | a) I need the BeanManager. BootstrapBean is initialised, so I can call BB.getWeldManager(). I do however need access to the bean manager to use, which I can get from the (Flat)Deployment attachment. I do see some issues down the line if a deployment has several bean managers, but want to get something up and running before digging into that.
| |
| This is the name under which BootstrapBean is registered in MC:
| * String bootstrapName = DeployersUtils.getBootstrapBeanName(unit);
|
I have a chicken and egg situation :-) When creating WeldKernelControllerContexts in the BeanMetaDataDeployer plugin, I need a reference to the BeanManager:
| public KernelControllerContext createContext(DeploymentUnit unit, BeanMetaData beanMetaData)
| {
| if (determineWeldDeployment(unit))
| {
| BeanManager beanManager = ????;
| return new WeldKernelControllerContext(null, beanMetaData, null, beanManager);
| }
| return null;
| }
|
However, since everything is deployed by the BeanMetaDataDeployer there is not really a way to make sure that we are deploying the BeanManager. Unless you know of a nicer way I think I'll end up doing something along the lines of:
| public KernelControllerContext createContext(DeploymentUnit unit, BeanMetaData beanMetaData)
| {
| if (determineWeldDeployment(unit))
| {
| if (isBootstrapBean(beanMetaData))
| return new KernelControllerContext(null, beanMetaData, null);
|
| //Add dependency on bootstrap bean in beanMetaData
| //bootstrap bean should be CREATED, and is needed in the DESCRIBE state *)
| BeanManager beanManager = new DelegatingBeanManager(DeployersUtils.getBootstrapBeanName(unit));
|
| new WeldKernelControllerContext(null, beanMetaData, null, beanManager);
| }
| return null;
| }
|
*) The DESCRIBE state is probably too early, so I will probably need a WELD_EXTRA_DESCRIBE state or something like that to initialise the WeldInjector for WeldKernelControllerContexts, which I am currently doing as part of the DESCRIBE state.
| public class DelegatingBeanManager implements BeanManager
| {
| private volatile BeanManager manager;
|
| Controller controller;
|
| String beanManagerName;
|
| public DelegatingBeanManager(Controller controller)
| {
| this.controller = controller;
| if (controller instanceof ControllerStateModel == false)
| throw new IllegalArgumentException("Controller is not an instance of ControllerStateModel");
| }
|
| private BeanManager getBeanManager()
| {
| if (manager == null)
| {
| ControllerContext context = controller.getContext(beanManagerName, null);
| if (context == null)
| throw new IllegalStateException("No bean manager found under " + beanManagerName);
|
| manager = (BeanManager)context.getTarget();
| }
| return manager;
| }
|
| /**
| * @param bean
| * @deprecated
| * @see javax.enterprise.inject.spi.BeanManager#addBean(javax.enterprise.inject.spi.Bean)
| */
| public void addBean(Bean<?> bean)
| {
| getBeanManager().addBean(bean);
| }
|
| //Rest of BeanManager methods
| }
|
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4262236#4262236
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4262236
16 years, 2 months