[webbeans-commits] Webbeans SVN: r1202 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-01-23 08:45:28 -0500 (Fri, 23 Jan 2009)
New Revision: 1202
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
Log:
Slightly neater specializtion :-)
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-23 13:33:44 UTC (rev 1201)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-23 13:45:28 UTC (rev 1202)
@@ -132,16 +132,17 @@
protected void init()
{
mergedStereotypes = new MergedStereotypes<T, E>(getAnnotatedItem().getMetaAnnotations(Stereotype.class));
+ initBindingTypes();
if (isSpecializing())
{
preCheckSpecialization();
initSpecialization();
postSpecialization();
}
+ initDefaultBindings();
initType();
initPrimitive();
log.debug("Building Web Bean bean metadata for " + getType());
- initBindingTypes();
initName();
initDeploymentType();
checkDeploymentType();
@@ -167,10 +168,10 @@
{
this.bindingTypes = new HashSet<Annotation>();
this.bindingTypes.addAll(getAnnotatedItem().getMetaAnnotations(BindingType.class));
- if (isSpecializing())
- {
- this.bindingTypes.addAll(getSpecializedBean().getBindings());
- }
+ }
+
+ protected void initDefaultBindings()
+ {
if (bindingTypes.size() == 0)
{
log.trace("Adding default @Current binding type");
@@ -180,7 +181,6 @@
{
log.trace("Using binding types " + bindingTypes + " specified by annotations");
}
- return;
}
/**
@@ -227,11 +227,6 @@
return;
}
}
- else if (isSpecializing())
- {
- this.name = getSpecializedBean().getName();
- return;
- }
if (beanNameDefaulted || getMergedStereotypes().isBeanNameDefaulted())
{
@@ -334,8 +329,12 @@
{
throw new DefinitionException("Cannot put name on specializing and specialized class");
}
- // register the specialized bean
- // TODO not sure this quite right
+ this.bindingTypes.addAll(getSpecializedBean().getBindings());
+ if (isSpecializing() && getSpecializedBean().getAnnotatedItem().isAnnotationPresent(Named.class))
+ {
+ this.name = getSpecializedBean().getName();
+ return;
+ }
manager.getSpecializedBeans().put(getSpecializedBean(), this);
}
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1201 - tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context and 1 other directory.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-01-23 08:33:44 -0500 (Fri, 23 Jan 2009)
New Revision: 1201
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/ContextTest.java
Log:
WBRI-115
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java 2009-01-23 13:33:08 UTC (rev 1200)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java 2009-01-23 13:33:44 UTC (rev 1201)
@@ -18,6 +18,7 @@
package org.jboss.webbeans.context;
import java.lang.annotation.Annotation;
+import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -63,7 +64,15 @@
*/
public List<Context> getContext(Class<? extends Annotation> scopeType)
{
- return getValue(scopeType);
+ List<Context> contexts = getValue(scopeType);
+ if (contexts == null)
+ {
+ return Collections.emptyList();
+ }
+ else
+ {
+ return contexts;
+ }
}
@Override
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/ContextTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/ContextTest.java 2009-01-23 13:33:08 UTC (rev 1200)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/ContextTest.java 2009-01-23 13:33:44 UTC (rev 1201)
@@ -62,7 +62,7 @@
manager.getContext(Dummy.class);
}
- @Test(expectedExceptions={ContextNotActiveException.class}, groups={"manager", "broken"}) @SpecAssertion(section="9.6")
+ @Test(expectedExceptions={ContextNotActiveException.class}, groups={"manager"}) @SpecAssertion(section="9.6")
public void testGetContextWithNoRegisteredContextsFails()
{
manager.getContext(Unregistered.class);
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1200 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: context and 3 other directories.
by webbeans-commits@lists.jboss.org
Author: nickarls
Date: 2009-01-23 08:33:08 -0500 (Fri, 23 Jan 2009)
New Revision: 1200
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextualInstance.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/DependentContext.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointProvider.java
Log:
Refactoring infra for collecting dependent instances -> DependentContext.
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-23 13:30:20 UTC (rev 1199)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-23 13:33:08 UTC (rev 1200)
@@ -37,6 +37,7 @@
import javax.webbeans.manager.Bean;
import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.context.DependentInstancesStore;
import org.jboss.webbeans.injection.InjectionPointImpl;
import org.jboss.webbeans.introspector.AnnotatedItem;
import org.jboss.webbeans.introspector.AnnotationStore.AnnotationMap;
@@ -62,6 +63,7 @@
private static Set<Class<?>> STANDARD_WEB_BEAN_CLASSES = new HashSet<Class<?>>(Arrays.asList(Event.class, ManagerImpl.class));
private boolean proxyable;
+ protected DependentInstancesStore dependentInstancesStore;
/**
* Helper class for getting deployment type
@@ -121,6 +123,7 @@
super(manager);
this.manager = manager;
annotatedInjectionPoints = new HashSet<AnnotatedItem<?, ?>>();
+ dependentInstancesStore = new DependentInstancesStore();
}
/**
@@ -184,7 +187,7 @@
* Initializes the deployment types
*/
protected abstract void initDeploymentType();
-
+
protected void initDeploymentTypeFromStereotype()
{
AnnotationMap possibleDeploymentTypes = getMergedStereotypes().getPossibleDeploymentTypes();
@@ -229,14 +232,14 @@
this.name = getSpecializedBean().getName();
return;
}
-
+
if (beanNameDefaulted || getMergedStereotypes().isBeanNameDefaulted())
{
this.name = getDefaultName();
return;
}
}
-
+
protected void initProxyable()
{
proxyable = Beans.apiTypesAreProxyable(getTypes());
@@ -270,7 +273,7 @@
* Initializes the scope type
*/
protected abstract void initScopeType();
-
+
protected boolean initScopeTypeFromStereotype()
{
Set<Annotation> possibleScopeTypes = getMergedStereotypes().getPossibleScopeTypes();
@@ -309,7 +312,7 @@
throw new DefinitionException(getAnnotatedItem().getName() + " cannot have deployment type @Standard");
}
}
-
+
/**
* Validates that the required types are implemented
*/
@@ -558,7 +561,16 @@
{
return proxyable;
}
-
+ public DependentInstancesStore getDependentInstancesStore()
+ {
+ return dependentInstancesStore;
+ }
+
+ public boolean isDependent()
+ {
+ return Dependent.class.equals(scopeType);
+ }
+
public boolean isSpecializing()
{
return getAnnotatedItem().isAnnotationPresent(Specializes.class);
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-01-23 13:30:20 UTC (rev 1199)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-01-23 13:33:08 UTC (rev 1200)
@@ -61,7 +61,6 @@
private Set<AnnotatedField<?>> injectableFields;
// The initializer methods
private Set<AnnotatedMethod<?>> initializerMethods;
- protected DependentInstancesStore dependentInstancesStore;
/**
* Constructor
@@ -73,7 +72,6 @@
{
super(manager);
this.annotatedItem = type;
- this.dependentInstancesStore = new DependentInstancesStore();
}
/**
@@ -269,7 +267,7 @@
throw new DefinitionException("Web Bean implementation class " + type + " cannot be declared abstract");
}
}
-
+
@Override
protected void preCheckSpecialization()
{
@@ -346,11 +344,6 @@
return Production.class;
}
- public DependentInstancesStore getDependentInstancesStore()
- {
- return dependentInstancesStore;
- }
-
@Override
public boolean equals(Object other)
{
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java 2009-01-23 13:30:20 UTC (rev 1199)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java 2009-01-23 13:33:08 UTC (rev 1200)
@@ -53,7 +53,7 @@
{
// The declaring bean
protected AbstractClassBean<?> declaringBean;
-
+
private static final LogProvider log = Logging.getLogProvider(AbstractProducerBean.class);
/**
@@ -162,8 +162,7 @@
*/
protected void checkReturnValue(T instance)
{
- boolean dependent = Dependent.class.equals(getScopeType());
- if (instance == null && !dependent)
+ if (instance == null && !isDependent())
{
throw new IllegalProductException("Cannot return null from a non-dependent producer method");
}
@@ -177,7 +176,7 @@
{
return;
}
- if (dependent && Beans.isPassivatingBean(injectionPoint.getBean()))
+ if (isDependent() && Beans.isPassivatingBean(injectionPoint.getBean()))
{
if (injectionPoint.isField())
{
@@ -208,7 +207,7 @@
}
}
}
-
+
@Override
protected void initScopeType()
{
@@ -223,16 +222,16 @@
log.trace("Scope " + scopeType + " specified by annotation");
return;
}
-
+
initScopeTypeFromStereotype();
-
+
if (this.scopeType == null)
{
this.scopeType = Dependent.class;
log.trace("Using default @Dependent scope");
}
}
-
+
@Override
protected void initDeploymentType()
{
@@ -276,8 +275,13 @@
@Override
public T create()
{
+ Object dependentCollector = new Object();
try
{
+ if (getDeclaringBean().isDependent())
+ {
+ DependentContext.INSTANCE.setCurrentInjectionInstance(dependentCollector);
+ }
DependentContext.INSTANCE.setActive(true);
T instance = produceInstance();
checkReturnValue(instance);
@@ -285,6 +289,11 @@
}
finally
{
+ if (getDeclaringBean().isDependent())
+ {
+ DependentContext.INSTANCE.clearCurrentInjectionInstance(dependentCollector);
+ dependentInstancesStore.destroyDependentInstances(dependentCollector);
+ }
DependentContext.INSTANCE.setActive(false);
}
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2009-01-23 13:30:20 UTC (rev 1199)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2009-01-23 13:33:08 UTC (rev 1200)
@@ -309,6 +309,7 @@
try
{
manager.getInjectionPointProvider().pushBean(this);
+ DependentContext.INSTANCE.setCurrentInjectionInstance(instance);
DependentContext.INSTANCE.setActive(true);
bindDecorators();
bindInterceptors();
@@ -318,6 +319,7 @@
}
finally
{
+ DependentContext.INSTANCE.clearCurrentInjectionInstance(instance);
manager.getInjectionPointProvider().popBean();
DependentContext.INSTANCE.setActive(false);
}
@@ -341,7 +343,7 @@
public boolean canCallRemoveMethods()
{
- return getEjbDescriptor().isStateful() && Dependent.class.equals(getScopeType());
+ return getEjbDescriptor().isStateful() && isDependent();
}
@Override
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-23 13:30:20 UTC (rev 1199)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-23 13:33:08 UTC (rev 1200)
@@ -124,7 +124,7 @@
try
{
instance = constructor.newInstance(manager);
- injectionPointProvider.setCurrentInjectionInstance(instance);
+ DependentContext.INSTANCE.setCurrentInjectionInstance(instance);
bindDecorators();
bindInterceptors();
injectEjbAndCommonFields(instance);
@@ -134,7 +134,7 @@
}
finally
{
- injectionPointProvider.clearCurrentInjectionInstance(instance);
+ DependentContext.INSTANCE.clearCurrentInjectionInstance(instance);
injectionPointProvider.popBean();
}
return instance;
@@ -504,8 +504,7 @@
@Override
public boolean isSerializable()
{
- boolean dependent = Dependent.class.equals(getScopeType());
- if (dependent)
+ if (isDependent())
{
return Reflections.isSerializable(getType());
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextualInstance.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextualInstance.java 2009-01-23 13:30:20 UTC (rev 1199)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextualInstance.java 2009-01-23 13:33:08 UTC (rev 1200)
@@ -1,7 +1,5 @@
package org.jboss.webbeans.context;
-import javax.webbeans.Dependent;
-import javax.webbeans.manager.Bean;
import javax.webbeans.manager.Contextual;
public class ContextualInstance<T>
@@ -25,13 +23,4 @@
contextual.destroy(instance);
}
- public boolean isDependent()
- {
- return contextual instanceof Bean && Dependent.class.equals(((Bean<T>)contextual).getScopeType());
- }
-
- public Object getInstance()
- {
- return instance;
- }
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/DependentContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/DependentContext.java 2009-01-23 13:30:20 UTC (rev 1199)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/DependentContext.java 2009-01-23 13:33:08 UTC (rev 1200)
@@ -23,9 +23,7 @@
import javax.webbeans.Dependent;
import javax.webbeans.manager.Contextual;
-import org.jboss.webbeans.CurrentManager;
import org.jboss.webbeans.bean.AbstractClassBean;
-import org.jboss.webbeans.injection.InjectionPointProvider;
/**
* The dependent context
@@ -38,7 +36,9 @@
public static DependentContext INSTANCE = new DependentContext();
private ThreadLocal<AtomicInteger> reentrantActiveCount;
+ private ThreadLocal<Object> currentInjectionInstance;
+
/**
* Constructor
*/
@@ -54,6 +54,7 @@
return new AtomicInteger(0);
}
};
+ this.currentInjectionInstance = new ThreadLocal<Object>();
}
/**
@@ -69,11 +70,10 @@
throw new ContextNotActiveException();
}
T instance = create == false ? null : bean.create();
- InjectionPointProvider injectionPointProvider = CurrentManager.rootManager().getInjectionPointProvider();
- if (bean instanceof AbstractClassBean && injectionPointProvider.isInjecting())
+ if (bean instanceof AbstractClassBean && (currentInjectionInstance.get() != null))
{
DependentInstancesStore dependentInstancesStore = ((AbstractClassBean<?>) bean).getDependentInstancesStore();
- dependentInstancesStore.addDependentInstance(injectionPointProvider.getCurrentInjectionInstance(), ContextualInstance.of(bean, instance));
+ dependentInstancesStore.addDependentInstance(currentInjectionInstance.get(), ContextualInstance.of(bean, instance));
}
return instance;
}
@@ -103,5 +103,21 @@
}
}
}
+
+ public void setCurrentInjectionInstance(Object currentInjectionInstance)
+ {
+ if (this.currentInjectionInstance.get() == null)
+ {
+ this.currentInjectionInstance.set(currentInjectionInstance);
+ }
+ }
+ public void clearCurrentInjectionInstance(Object instance)
+ {
+ if (this.currentInjectionInstance.get() == instance)
+ {
+ this.currentInjectionInstance.set(null);
+ }
+ }
+
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java 2009-01-23 13:30:20 UTC (rev 1199)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java 2009-01-23 13:33:08 UTC (rev 1200)
@@ -25,7 +25,6 @@
import org.jboss.webbeans.CurrentManager;
import org.jboss.webbeans.context.DependentContext;
-import org.jboss.webbeans.injection.InjectionPointProvider;
public class WebBeansELResolver extends ELResolver
{
@@ -67,11 +66,10 @@
{
// TODO Any other way than creating a dummy parent to collect the created dependent objects under?
Object dependentsCollector = new Object();
- InjectionPointProvider injectionPointProvider = CurrentManager.rootManager().getInjectionPointProvider();
try
{
DependentContext.INSTANCE.setActive(true);
- injectionPointProvider.setCurrentInjectionInstance(dependentsCollector);
+ DependentContext.INSTANCE.setCurrentInjectionInstance(dependentsCollector);
Object value = CurrentManager.rootManager().getInstanceByName(property.toString());
if (value != null)
{
@@ -81,7 +79,7 @@
}
finally
{
- injectionPointProvider.clearCurrentInjectionInstance(dependentsCollector);
+ DependentContext.INSTANCE.clearCurrentInjectionInstance(dependentsCollector);
DependentContext.INSTANCE.setActive(false);
}
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java 2009-01-23 13:30:20 UTC (rev 1199)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java 2009-01-23 13:33:08 UTC (rev 1200)
@@ -29,6 +29,7 @@
import javax.webbeans.AfterTransactionSuccess;
import javax.webbeans.BeforeTransactionCompletion;
import javax.webbeans.DefinitionException;
+import javax.webbeans.Dependent;
import javax.webbeans.Disposes;
import javax.webbeans.ExecutionException;
import javax.webbeans.IfExists;
@@ -38,9 +39,13 @@
import javax.webbeans.Observes;
import javax.webbeans.Produces;
import javax.webbeans.manager.Bean;
+import javax.webbeans.manager.Contextual;
import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.bean.AbstractBean;
import org.jboss.webbeans.bean.AbstractClassBean;
+import org.jboss.webbeans.context.ContextualInstance;
+import org.jboss.webbeans.context.DependentContext;
import org.jboss.webbeans.introspector.AnnotatedMethod;
import org.jboss.webbeans.introspector.AnnotatedParameter;
import org.jboss.webbeans.transaction.UserTransaction;
@@ -62,12 +67,12 @@
/**
* The known transactional phases a transactional event observer can be
* interested in
- */
+ */
protected enum TransactionObservationPhase
{
NONE, BEFORE_COMPLETION, AFTER_COMPLETION, AFTER_FAILURE, AFTER_SUCCESS
- }
-
+ }
+
private final Bean<?> observerBean;
private final AnnotatedMethod<?> observerMethod;
private TransactionObservationPhase transactionObservationPhase;
@@ -103,12 +108,12 @@
this.observerBean = observerBean;
this.observerMethod = observer;
checkObserverMethod();
-
+
@SuppressWarnings("unchecked")
Class<T> c = (Class<T>) observerMethod.getAnnotatedParameters(Observes.class).get(0).getType();
this.eventType = c;
-
- this.bindings = observerMethod.getAnnotatedParameters(Observes.class).get(0).getBindingTypesAsArray();
+
+ this.bindings = observerMethod.getAnnotatedParameters(Observes.class).get(0).getBindingTypesAsArray();
initTransactionObservationPhase();
this.conditional = !observerMethod.getAnnotatedParameters(IfExists.class).isEmpty();
}
@@ -147,7 +152,8 @@
}
/**
- * Performs validation of the observer method for compliance with the specifications.
+ * Performs validation of the observer method for compliance with the
+ * specifications.
*/
private void checkObserverMethod()
{
@@ -175,7 +181,7 @@
}
// Check annotations on the method to make sure this is not a producer
// method, initializer method, or destructor method.
- if ( this.observerMethod.isAnnotationPresent(Produces.class) )
+ if (this.observerMethod.isAnnotationPresent(Produces.class))
{
throw new DefinitionException(this + " cannot be annotated with @Produces");
}
@@ -187,35 +193,50 @@
public void notify(final T event)
{
- // Get the most specialized instance of the component
- Object instance = manager.getInstance(observerBean, !isConditional());
- if (instance != null)
+ Object instance = null;
+ Object dependentsCollector = new Object();
+ try
{
- try
+ if (Dependent.class.equals(observerBean.getScopeType()) && observerBean instanceof AbstractBean)
{
- if ( isTransactional() && isTransactionActive() )
+ DependentContext.INSTANCE.setCurrentInjectionInstance(dependentsCollector);
+ }
+ // Get the most specialized instance of the component
+ instance = manager.getInstance(observerBean, !isConditional());
+ if (instance == null)
+ {
+ return;
+ }
+ if (isTransactional() && isTransactionActive())
+ {
+ deferEvent(event);
+ }
+ else
+ {
+ observerMethod.invokeWithSpecialValue(instance, Observes.class, event, manager);
+ }
+ }
+ catch (ExecutionException e)
+ {
+ if ((e.getCause() != null) && (e.getCause() instanceof InvocationTargetException))
+ {
+ InvocationTargetException wrappedException = (InvocationTargetException) e.getCause();
+ if ((wrappedException.getCause() != null) && (RuntimeException.class.isAssignableFrom(wrappedException.getCause().getClass())))
{
- deferEvent(event);
+ throw (RuntimeException) wrappedException.getCause();
}
else
{
- observerMethod.invokeWithSpecialValue(instance, Observes.class, event, manager);
+ throw new ObserverException(wrappedException.getCause().getMessage(), wrappedException.getCause());
}
}
- catch (ExecutionException e)
+ }
+ finally
+ {
+ if (Dependent.class.equals(observerBean.getScopeType()))
{
- if ((e.getCause() != null) && (e.getCause() instanceof InvocationTargetException))
- {
- InvocationTargetException wrappedException = (InvocationTargetException) e.getCause();
- if ((wrappedException.getCause() != null) && (RuntimeException.class.isAssignableFrom(wrappedException.getCause().getClass())))
- {
- throw (RuntimeException) wrappedException.getCause();
- }
- else
- {
- throw new ObserverException(wrappedException.getCause().getMessage(), wrappedException.getCause());
- }
- }
+ ((AbstractBean<?, ?>) observerBean).getDependentInstancesStore().destroyDependentInstances(dependentsCollector);
+ DependentContext.INSTANCE.clearCurrentInjectionInstance(instance);
}
}
}
@@ -230,7 +251,7 @@
UserTransaction userTransaction = manager.getInstanceByType(UserTransaction.class);
try
{
- return userTransaction!=null && userTransaction.getStatus() == Status.STATUS_ACTIVE;
+ return userTransaction != null && userTransaction.getStatus() == Status.STATUS_ACTIVE;
}
catch (SystemException e)
{
@@ -239,7 +260,8 @@
}
/**
- * Defers an event for processing in a later phase of the current transaction.
+ * Defers an event for processing in a later phase of the current
+ * transaction.
*
* Gets the transaction listener, creates a deferred event representation and
* registers the deferred event.
@@ -283,7 +305,7 @@
{
return transactionObservationPhase.equals(currentPhase);
}
-
+
@Override
public String toString()
{
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointProvider.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointProvider.java 2009-01-23 13:30:20 UTC (rev 1199)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointProvider.java 2009-01-23 13:33:08 UTC (rev 1200)
@@ -36,29 +36,8 @@
private final Stack<Bean<?>> beans = new Stack<Bean<?>>();
// The stack of injection points
private final Stack<InjectionPoint> injectionPoints = new Stack<InjectionPoint>();
- private Object currentInjectionInstance;
- public void setCurrentInjectionInstance(Object currentInjectionInstance)
- {
- if (this.currentInjectionInstance == null)
- {
- this.currentInjectionInstance = currentInjectionInstance;
- }
- }
-
- public void clearCurrentInjectionInstance(Object instance)
- {
- if (this.currentInjectionInstance == instance)
- {
- this.currentInjectionInstance = null;
- }
- }
-
- public Object getCurrentInjectionInstance()
- {
- return currentInjectionInstance;
- }
-
+
/**
* Pushes a bean to the stack
*
@@ -153,9 +132,4 @@
return "InjectionPointProvider: Bean stack = " + beans.toString() + " InjectionPoint stack = " + injectionPoints.toString();
}
- public boolean isInjecting()
- {
- return currentInjectionInstance != null;
- }
-
}
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1199 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: util and 1 other directory.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-01-23 08:30:20 -0500 (Fri, 23 Jan 2009)
New Revision: 1199
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ConcurrentCache.java
Log:
minor
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java 2009-01-23 07:38:07 UTC (rev 1198)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java 2009-01-23 13:30:20 UTC (rev 1199)
@@ -21,9 +21,7 @@
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.Future;
-import javax.webbeans.ExecutionException;
import javax.webbeans.manager.Context;
import org.jboss.webbeans.util.ConcurrentCache;
@@ -46,34 +44,13 @@
*/
public AbstractContext getBuiltInContext(Class<? extends Annotation> scopeType)
{
- boolean interrupted = false;
- try
+ if (getContext(scopeType) != null)
{
- while (true)
- {
- try
- {
- Future<List<Context>> future = getFuture(scopeType);
- if (future == null)
- return null;
- return (AbstractContext) future.get().iterator().next();
- }
- catch (InterruptedException e)
- {
- interrupted = true;
- }
- catch (java.util.concurrent.ExecutionException e)
- {
- rethrow(e);
- }
- }
+ return (AbstractContext) getContext(scopeType).get(0);
}
- finally
+ else
{
- if (interrupted)
- {
- Thread.currentThread().interrupt();
- }
+ return null;
}
}
@@ -86,36 +63,7 @@
*/
public List<Context> getContext(Class<? extends Annotation> scopeType)
{
- boolean interrupted = false;
- try
- {
- while (true)
- {
- try
- {
- if (getFuture(scopeType) == null)
- {
- throw new ExecutionException("No scope registered for " + scopeType);
- }
- return getFuture(scopeType).get();
- }
- catch (InterruptedException e)
- {
- interrupted = true;
- }
- catch (java.util.concurrent.ExecutionException e)
- {
- rethrow(e);
- }
- }
- }
- finally
- {
- if (interrupted)
- {
- Thread.currentThread().interrupt();
- }
- }
+ return getValue(scopeType);
}
@Override
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ConcurrentCache.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ConcurrentCache.java 2009-01-23 07:38:07 UTC (rev 1198)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ConcurrentCache.java 2009-01-23 13:30:20 UTC (rev 1199)
@@ -88,7 +88,6 @@
{
rethrow(e);
}
- ;
}
}
finally
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1198 - doc/trunk/reference/ko-KR.
by webbeans-commits@lists.jboss.org
Author: eukim
Date: 2009-01-23 02:38:07 -0500 (Fri, 23 Jan 2009)
New Revision: 1198
Modified:
doc/trunk/reference/ko-KR/injection.po
Log:
updated
Modified: doc/trunk/reference/ko-KR/injection.po
===================================================================
--- doc/trunk/reference/ko-KR/injection.po 2009-01-23 07:29:42 UTC (rev 1197)
+++ doc/trunk/reference/ko-KR/injection.po 2009-01-23 07:38:07 UTC (rev 1198)
@@ -8,7 +8,7 @@
"Project-Id-Version: injection\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-06 11:30+0000\n"
-"PO-Revision-Date: 2009-01-23 17:29+1000\n"
+"PO-Revision-Date: 2009-01-23 17:37+1000\n"
"Last-Translator: Eunju Kim <eukim(a)redhat.com>\n"
"Language-Team: Korean <ko(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -981,7 +981,6 @@
#. Tag: para
#: injection.xml:357
#, no-c-format
-#, fuzzy
msgid ""
"Therefore, unless a Web Bean has the default scope <literal>@Dependent</"
"literal>, the Web Bean manager must indirect all injected references to the "
@@ -991,7 +990,7 @@
"client proxy also allows Web Beans bound to contexts such as the session "
"context to be serialized to disk without recursively serializing other "
"injected Web Beans."
-msgstr "따라서, Web Bean은 기본값 범위 <literal>@Dependent</literal>를 갖지 않는 한, Web Bean 관리자는 프록시 객체를 통해 삽입된 모든 참조를 Web Bean으로 돌려 놓아야 합니다. 이러한 <emphasis>클라이언트 프록시</emphasis>는 "
+msgstr "따라서, Web Bean은 기본값 범위 <literal>@Dependent</literal>를 갖지 않는 한, Web Bean 관리자는 프록시 객체를 통해 삽입된 모든 참조를 Web Bean으로 돌려 놓아야 합니다. 이러한 <emphasis>클라이언트 프록시</emphasis>는 방식 호출을 받는 Web Bean 인스턴스가 현재 컨텍스트와 관련된 인스턴스임을 확인해야 할 책임이 있습니다. 또한 클라이언트 프록시는 Web Beans가 삽입된 다른 Web Beans를 귀납적으로 나열하지 않고 디스크 순서대로 나열한 세션 컨텍스트와 같은 컨텍스트로 바운딩되게 합니다. "
#. Tag: para
#: injection.xml:365
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1197 - doc/trunk/reference/ko-KR.
by webbeans-commits@lists.jboss.org
Author: eukim
Date: 2009-01-23 02:29:42 -0500 (Fri, 23 Jan 2009)
New Revision: 1197
Modified:
doc/trunk/reference/ko-KR/injection.po
doc/trunk/reference/ko-KR/intro.po
Log:
updated
Modified: doc/trunk/reference/ko-KR/injection.po
===================================================================
--- doc/trunk/reference/ko-KR/injection.po 2009-01-23 06:23:42 UTC (rev 1196)
+++ doc/trunk/reference/ko-KR/injection.po 2009-01-23 07:29:42 UTC (rev 1197)
@@ -8,7 +8,7 @@
"Project-Id-Version: injection\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-06 11:30+0000\n"
-"PO-Revision-Date: 2009-01-23 11:09+1000\n"
+"PO-Revision-Date: 2009-01-23 17:29+1000\n"
"Last-Translator: Eunju Kim <eukim(a)redhat.com>\n"
"Language-Team: Korean <ko(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -28,6 +28,8 @@
"\n"
"\n"
"\n"
+"\n"
+"\n"
#. Tag: title
#: injection.xml:4
@@ -894,13 +896,12 @@
#. Tag: para
#: injection.xml:315
#, no-c-format
-#, fuzzy
msgid ""
"The typesafe resolution algorithm fails when, after considering the binding "
"annotations and and deployment types of all Web Beans that implement the API "
"type of an injection point, the Web Bean manager is unable to identify "
"exactly one Web Bean to inject."
-msgstr "타입 안정적 해상도 알고리즘은 "
+msgstr "바인딩 어노테이션 및 삽입 지점의 API 유형을 구현하는 모든 Web Beans의 배치 유형을 고려한 후, Web Bean 관리자는 삽입할 하나의 Web Bean을 인식하지 못할 경우 타입 안정적 해상도 알고리즘은 실패하게 됩니다. "
#. Tag: para
#: injection.xml:320
@@ -964,7 +965,7 @@
"reference to a Web Bean bound to the request scope. The application scoped "
"Web Bean is shared between many different requests. However, each request "
"should see a different instance of the request scoped Web bean!"
-msgstr ""
+msgstr "요청 범위로 바운딩된 Web Bean으로의 직접 참조를 보유하고 있는 애플리케이션 범위에 바운딩된 Web Bean을 가정해 봅시다. 애플리케이션 범위에 바운딩된 Web Bean은 다른 많은 요청 사이에서 공유됩니다. 하지만, 각각의 요청은 요청 범위로 바운딩된 Web Bean의 다른 인스턴스를 확인해야 합니다! "
#. Tag: para
#: injection.xml:351
@@ -975,11 +976,12 @@
"the session context is serialized to disk in order to use memory more "
"efficiently. However, the application scoped Web Bean instance should not be "
"serialized along with the session scoped Web Bean!"
-msgstr ""
+msgstr "이제 애플리케이션 범위로 바운딩된 Web Bean으로의 직접 참조를 보유하고 있는 세션 범위에 바운딩된 Web Bean을 가정해 봅시다. 때때로 세션 컨텍스트는 메모리를 보다 효과적으로 사용하기 위해 디스크 순서대로 나열됩니다. 하지만, 애플리케이션 범위로 바운딩된 Web Bean 인스턴스는 세션 범위로 바운딩된 Web Bean과 함께 나열되어서는 안됩니다! "
#. Tag: para
#: injection.xml:357
#, no-c-format
+#, fuzzy
msgid ""
"Therefore, unless a Web Bean has the default scope <literal>@Dependent</"
"literal>, the Web Bean manager must indirect all injected references to the "
@@ -989,7 +991,7 @@
"client proxy also allows Web Beans bound to contexts such as the session "
"context to be serialized to disk without recursively serializing other "
"injected Web Beans."
-msgstr ""
+msgstr "따라서, Web Bean은 기본값 범위 <literal>@Dependent</literal>를 갖지 않는 한, Web Bean 관리자는 프록시 객체를 통해 삽입된 모든 참조를 Web Bean으로 돌려 놓아야 합니다. 이러한 <emphasis>클라이언트 프록시</emphasis>는 "
#. Tag: para
#: injection.xml:365
Modified: doc/trunk/reference/ko-KR/intro.po
===================================================================
--- doc/trunk/reference/ko-KR/intro.po 2009-01-23 06:23:42 UTC (rev 1196)
+++ doc/trunk/reference/ko-KR/intro.po 2009-01-23 07:29:42 UTC (rev 1197)
@@ -8,7 +8,7 @@
"Project-Id-Version: intro\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-06 11:30+0000\n"
-"PO-Revision-Date: 2009-01-23 16:23+1000\n"
+"PO-Revision-Date: 2009-01-23 17:28+1000\n"
"Last-Translator: Eunju Kim <eukim(a)redhat.com>\n"
"Language-Team: Korean <ko(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -26,6 +26,7 @@
"\n"
"\n"
"\n"
+"\n"
#. Tag: title
#: intro.xml:4
@@ -518,7 +519,7 @@
"For each injection point, the Web Bean manager searches for a Web Bean which "
"satisfies the contract (implements the API, and has all the binding types), "
"and injects that Web Bean."
-msgstr ""
+msgstr "각각의 삽입 지점의 경우, Web Bean 관리자는 계약을 만족시키는 (API를 구현하고 모든 바인딩 유형을 갖는) Web Bean을 검색하여 이를 삽입합니다. "
#. Tag: para
#: intro.xml:200
@@ -527,7 +528,7 @@
"The following Web Bean has the binding type <literal>@CreditCard</literal> "
"and implements the API type <literal>PaymentProcessor</literal>. It could "
"therefore be injected to the example injection point:"
-msgstr ""
+msgstr "다음과 같은 Web Bean은 <literal>@CreditCard</literal> 바인딩 유형을 갖고 <literal>PaymentProcessor</literal> API 유형을 구현합니다. 따라서 이는 예시 삽입 지점에 삽입될 수 있습니다: "
#. Tag: programlisting
#: intro.xml:204
@@ -548,7 +549,7 @@
"If a Web Bean does not explicitly specify a set of binding types, it has "
"exactly one binding type: the default binding type <literal>@Current</"
"literal>."
-msgstr ""
+msgstr "Web Bean이 바인딩 유형 모음을 명확히 지정하지 않을 경우, 이는 기본값 바인딩 유형인 <literal>@Current</literal>라는 하나의 바인딩 유형을 갖습니다. "
#. Tag: para
#: intro.xml:209
@@ -558,7 +559,7 @@
"algorithm</emphasis> that helps the container decide what to do if there is "
"more than one Web Bean that satisfies a particular contract. We'll get into "
"the details in <xref linkend=\"injection\"/>."
-msgstr ""
+msgstr "Web Beans는 정교하지만 직관적인 <emphasis>해상도 알고리즘</emphasis>을 정의하여 특정 계약을 만족시키는 하나 이상의 Web Bean이 있을 경우 컨테이너가 무엇을 해야할 지를 결정하는 것을 돕습니다. 보다 자세한 내용은 <xref linkend=\"injection\"/>에서 다루겠습니다. "
#. Tag: title
#: intro.xml:217
@@ -577,7 +578,7 @@
"apply the annotation to Web Beans which should be deployed in that scenario. "
"A deployment type allows a whole set of Web Beans to be conditionally "
"deployed, with a just single line of configuration."
-msgstr ""
+msgstr "<emphasis>배치 유형</emphasis>은 배치 시나리오에 의해 Web Beans을 구분하게 합니다. 배치 유형은 특정 배치 시나리오를 나타네는 어노테이션으로, 예를 들어 <literal>@Mock</literal>, <literal>@Staging</literal>, <literal>@AustralianTaxLaw</literal>가 있습니다. 시나리오에 배치되어야 할 Web Beans에 어노테이션을 적용합니다. 배치 유형은 단일 설정행을 사용하여 전체 Web Beans 모음이 상황에 따라 배치되게 합니다. "
#. Tag: para
#: intro.xml:226
@@ -678,13 +679,12 @@
#. Tag: para
#: intro.xml:262
#, no-c-format
-#, fuzzy
msgid ""
"By default, Web Beans belong to a special scope called the "
"<emphasis>dependent pseudo-scope</emphasis>. Web Beans with this scope are "
"pure dependent objects of the object into which they are injected, and their "
"lifecycle is bound to the lifecycle of that object."
-msgstr "기본값으로, Web Beans는 <emphasis>dependent pseudo-scope</emphasis>라는 특정 범위에 속합니다. 이러한 범위를 갖는 Web Beans는 "
+msgstr "기본값으로, Web Beans는 <emphasis>dependent pseudo-scope</emphasis>라는 특정 범위에 속합니다. 이러한 범위를 갖는 Web Beans는 삽입되어야할 객체의 순수한 의존적 객체이며 수명주기는 객체의 수명주기로 바운딩됩니다. "
#. Tag: para
#: intro.xml:267
@@ -756,7 +756,7 @@
msgid ""
"In this case, the name defaults to <literal>shoppingCart</literal> — the "
"unqualified class name, with the first character changed to lowercase."
-msgstr ""
+msgstr "이러한 경우, 이름 기본값은 <literal>shoppingCart</literal>가 됩니다 — 첫번째 문자가 소문자로 된 수식어가 붙지않는 클래스 이름. "
#. Tag: title
#: intro.xml:295
@@ -800,7 +800,7 @@
msgid ""
"However, it is more elegant, and better practice, to indirect the "
"interceptor binding through an <emphasis>interceptor binding type</emphasis>:"
-msgstr ""
+msgstr "하지만, <emphasis>인터셉터 바인딩 유형</emphasis>을 통해 인터셉터 바인딩을 돌려 놓는 것이 보다 좋습니다: "
#. Tag: programlisting
#: intro.xml:311
@@ -907,6 +907,8 @@
"objects — but they can take advantage of most of the functionality of Web "
"Beans, including dependency injection and interceptors."
msgstr ""
+"사양에서는 모든 EJB 3 스타일 세션 및 singleton beans가 EJB 3 <emphasis>엔터프라이즈</emphasis> Web Beans라고 말합니다. Message driven beans는 Web "
+"Beans이 아닙니다 — 다른 객체에 삽입되도록 되어있지 않기 때문 — 하지만 이는 의존성 삽입 및 인터셉터를 포함한 대부분의 Web Beans 기능의 장점을 취할 수 있습니다. "
#. Tag: para
#: intro.xml:366
@@ -917,7 +919,7 @@
"superinterfaces, is an API type of the enterprise Web Bean. If the EJB bean "
"has a bean class local view, the bean class, and every one of its "
"superclasses, is also an API type."
-msgstr ""
+msgstr "와일드카드 유형 매개 변수 또는 유형 변수를 갖지 않는 엔터프라이즈 Web Bean의 모든 로컬 인터페이스 및 이의 상위인터페이스는 엔터프라이즈 Web Bean의 API 유형입니다. EJB bean이 bean 클래스 로컬 보기를 갖고 있을 경우 bean 클래스 및 이의 모든 상위 클래스도 API 유형입니다. "
#. Tag: para
#: intro.xml:372
@@ -928,7 +930,7 @@
"manager calls this method to destroy the stateful session bean instance at "
"the end of its lifecycle. This method is called the <emphasis>destructor</"
"emphasis> method of the enterprise Web Bean."
-msgstr ""
+msgstr "상태유지 세션 빈은 매개 변수가 없는 제거 방식이나 <literal>@Destructor</literal>로 어노테이션된 삭제 방식을 명시해야 합니다. Web Bean 관리자는 수명 주기의 마지막에 상태 유지 세션 빈 인스턴스를 파괴하기 위해 이러한 방식을 호출합니다. 이러한 방식은 엔터프라이즈 Web Bean의 <emphasis>파괴자</emphasis> 방식이라고 합니다. "
#. Tag: programlisting
#: intro.xml:378
@@ -961,7 +963,7 @@
"So when should we use an enterprise Web Bean instead of a simple Web Bean? "
"Well, whenever we need the advanced enterprise services offered by EJB, such "
"as:"
-msgstr ""
+msgstr "그러면 언제 심플 Web Bean 대신 엔터프라이즈 Web Bean을 사용해야 할까요? 다음과 같이 EJB에 의해 제공되는 고급 엔터프라이즈 서비스가 필요할 때 마다 사용하면 됩니다: "
#. Tag: para
#: intro.xml:387
@@ -1023,6 +1025,8 @@
"<literal>@Singleton</literal> model, with its support for passivation and "
"instance pooling."
msgstr ""
+"Web Beans는 중량의 리소스에 참조를 보유하고 있거나 EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/"
+"<literal>@Singleton</literal> 모델에 의해 정의된 고급 컨테이너 관리 수명주기로 부터의 내부적 상태 장점을 수동화 및 인스턴스 풀링 지원과 함께 보유하고 있어야 합니다. "
#. Tag: para
#: intro.xml:417
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1196 - doc/trunk/reference/ko-KR.
by webbeans-commits@lists.jboss.org
Author: eukim
Date: 2009-01-23 01:23:42 -0500 (Fri, 23 Jan 2009)
New Revision: 1196
Modified:
doc/trunk/reference/ko-KR/intro.po
Log:
updated
Modified: doc/trunk/reference/ko-KR/intro.po
===================================================================
--- doc/trunk/reference/ko-KR/intro.po 2009-01-23 04:53:31 UTC (rev 1195)
+++ doc/trunk/reference/ko-KR/intro.po 2009-01-23 06:23:42 UTC (rev 1196)
@@ -8,7 +8,7 @@
"Project-Id-Version: intro\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-06 11:30+0000\n"
-"PO-Revision-Date: 2009-01-23 14:52+1000\n"
+"PO-Revision-Date: 2009-01-23 16:23+1000\n"
"Last-Translator: Eunju Kim <eukim(a)redhat.com>\n"
"Language-Team: Korean <ko(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -25,6 +25,7 @@
"\n"
"\n"
"\n"
+"\n"
#. Tag: title
#: intro.xml:4
@@ -35,14 +36,13 @@
#. Tag: para
#: intro.xml:6
#, no-c-format
-#, fuzzy
msgid ""
"So you're already keen to get started writing your first Web Bean? Or "
"perhaps you're skeptical, wondering what kinds of hoops the Web Beans "
"specification will make you jump through! The good news is that you've "
"probably already written and used hundreds, perhaps thousands of Web Beans. "
"You might not even remember the first Web Bean you wrote."
-msgstr "첫 번째 Web Bean 작성을 시작해 보시겠습니까? "
+msgstr "첫 번째 Web Bean 작성을 시작해 보시겠습니까? 혹은 어떤 종류의 Web Beans 사양으로 도약하게 될 지를 의아해 하거나 의심하고 계실 수 도 있겠군요! 한 가지 좋은 정보는 여러분은 이미 수백개의 혹은 수천개의 Web Beans을 이미 작성 및 사용하고 계셨다는 것입니다. 아마 여러분은 처음으로 작성하신 Web Beans를 기억하지 못하고 계실 수 도 있습니다. "
#. Tag: title
#: intro.xml:13
@@ -63,7 +63,7 @@
"into other Web Beans, configuring them via the Web Beans XML configuration "
"facility, even adding interceptors and decorators to them — without "
"touching your existing code."
-msgstr ""
+msgstr "특정한 예외 상항에서 매개 변수가 없는 것을 허용하는 생성자와 함께하는 모든 Java 클래스는 Web Bean입니다. 이에는 모든 JavaBean이 포함됩니다. 이에 더하여 모든 EJB 3-스타일 세션 빈도 Web Bean입니다. 물론 매일 작성하셨던 JavaBeans 및 EJB는 Web Beans 사양에 의해 정의된 새로운 서비스의 장점을 취할 수 없지만, Web Beans으로서 기존 코드를 변경하지 않고 이 모든 것을 사용하실 수 있습니다 — 기타 다른 Web Beans로의 삽입, Web Beans XML 설정 기능을 통한 설정, 인터셉터 및 데코레이터 추가 등— "
#. Tag: para
#: intro.xml:25
@@ -252,7 +252,6 @@
#. Tag: para
#: intro.xml:68
#, no-c-format
-#, fuzzy
msgid ""
"At system initialization time, the Web Bean manager must validate that "
"exactly one Web Bean exists which satisfies each injection point. In our "
@@ -262,7 +261,7 @@
"<literal>UnsatisfiedDependencyException</literal>. If more than one "
"implementation of <literal>Translator</literal> was available, the Web Bean "
"manager would throw an <literal>AmbiguousDependencyException</literal>."
-msgstr "시스템 초기화시 Web Bean 관리자는 "
+msgstr "시스템 초기화시 Web Bean 관리자는 각각의 삽입 지점을 만족시키는 하나의 Web Bean이 존재하도록 이를 유효화해야 합니다. 예에서 사용 가능한 <literal>Translator</literal> 구현이 없을 경우 — <literal>SentenceTranslator</literal> EJB가 배치되지 않는 다면 — Web Bean 관리자는 <literal>UnsatisfiedDependencyException</literal>을 넘기게 됩니다. 하나 이상의 <literal>Translator</literal>를 구현할 수 있을 경우, Web Bean 관리자는 <literal>AmbiguousDependencyException</literal>을 넘기게 됩니다. "
#. Tag: title
#: intro.xml:80
@@ -299,7 +298,7 @@
"singleton beans), different clients of a Web Bean see the Web Bean in "
"different states. The client-visible state depends upon which instance of "
"the Web Bean the client has a reference to."
-msgstr ""
+msgstr "두 번째 내용으로 돌아가 봅시다. \"컨텍스트화\"된다는 의미는 정확하게 무엇입니까? Web Beans가 상태 유지 세션 빈이면, 보유하고 있는것이 <emphasis>어떤</emphasis> 빈 인스턴스인가가 문제입니다. 무상태 구성 요소 모델 이나 (예: 무상태 세션 빈) 또는 singleton 구성요소 모델 (예: ervlets 또는 singleton 빈)과는 다르게 Web Bean의 다른 클라이언트는 다른 상태에 있는 Web Bean을 보게 됩니다. 클라이언트-가시성 상태는 클라이언트가 참조하고 있는 Web Bean의 인스턴스가 무엇인가에 의존합니다. "
#. Tag: para
#: intro.xml:98
@@ -310,6 +309,8 @@
"of the instance by explicitly creating and destroying it. Instead, the "
"<emphasis>scope</emphasis> of the Web Bean determines:"
msgstr ""
+"하지만, 무상태 또는 싱글턴 모델과 같으나 상태 유지 세션 빈 과는 <emphasis>다르게</"
+"emphasis>, 클라이언트는 인스턴스의 수명 주기를 명시적으로 생성 또는 파괴하여 제어하지 못합니다. 대신, Web Bean의 <emphasis>범위는</emphasis> 다음 사항을 결정합니다: "
#. Tag: para
#: intro.xml:105
@@ -321,7 +322,7 @@
#: intro.xml:108
#, no-c-format
msgid "which clients share a reference to a particular instance of the Web Bean."
-msgstr ""
+msgstr "어떤 클라이언트가 특정 Web Bean 인스턴스의 참조를 공유할 것인지 "
#. Tag: para
#: intro.xml:113
@@ -333,7 +334,7 @@
"is request scoped), or it may be shared with certain other threads (for "
"example, if the Web Bean is session scoped) or even all other threads (if it "
"is application scoped)."
-msgstr ""
+msgstr "Web Beans 애플리케이션에 있는 주어진 스레드의 경우, Web Bean 범위와 관련된 <emphasis>활성 컨텍스트</emphasis>가 있을 수 있습니다. 이러한 컨텍스트는 스레드에서 유일하거나 (예: 요청 범위일 경우) 또는 특정한 다른 스레드와 공유될 수 있거나 (예: Web Bean이 세션 범위일 경우) 또는 기타 다른 모든 스레드일 수 있습니다 (Web Bean이 애플리케이션 범위일 경우). "
#. Tag: para
#: intro.xml:119
@@ -342,7 +343,7 @@
"Clients (for example, other Web Beans) executing in the same context will "
"see the same instance of the Web Bean. But clients in a different context "
"will see a different instance."
-msgstr ""
+msgstr "동일한 컨텍스트에서 실행되는 클라이언트 (예: 기타 다른 Web Bean)는 동일한 Web Bean의 인스턴스를 보게 됩니다. 하지만 다른 컨텍스트에서 실행되는 클라이언트는 다른 인스턴스를 보게 됩니다. "
#. Tag: para
#: intro.xml:123
@@ -354,19 +355,19 @@
"even need to know what that lifecyle is.</emphasis> Web Beans interact by "
"passing messages, and the Web Bean implementations define the lifecycle of "
"their own state. The Web Beans are loosely coupled because:"
-msgstr ""
+msgstr "컨텍스트 모델의 큰 장점 중 하나는 상태 유지 Web Beans가 서비스처럼 다루어지게 하는 것입니다! 클라이언트는 사용되는 Web Bean의 수명 주기 관리 자체를 고려하거나, 또는 <emphasis>수명 주기가 무엇인지를 알 필요가 없습니다.</emphasis> Web Beans는 메세지를 전달하여 상호작용하고 Web Bean 구현은 자신의 상태에 따른 수명 주기를 정의합니다. Web Beans는 다음과 같은 이유로 느슨하게 연결되어 있습니다: "
#. Tag: para
#: intro.xml:132
#, no-c-format
msgid "they interact via well-defined public APIs"
-msgstr "잘 정의된 공개 API를 통해 상호 작용합니다 "
+msgstr "잘 정의된 공개 API를 통해 상호 작용하므로 "
#. Tag: para
#: intro.xml:135
#, no-c-format
msgid "their lifecycles are completely decoupled"
-msgstr "수명 주기는 완전하게 연결 해제됩니다 "
+msgstr "수명 주기는 완전하게 연결 해제되므로 "
#. Tag: para
#: intro.xml:139
@@ -377,7 +378,7 @@
"the other Web Bean implementation. In fact, Web Beans defines a "
"sophisticated facility for overriding Web Bean implementations at deployment "
"time, as we will see in <xref linkend=\"deploymenttypes\"/>."
-msgstr ""
+msgstr "하나의 Web Bean을 동일한 API를 구현하고 다른 Web Bean 구현에 영향을 미치지 않고 다른 수명 주기 (다른 범위)를 갖는 다른 Web Bean으로 대체할 수 있습니다. 사실, <xref linkend=\"deploymenttypes\"/>에서 살펴보실 수 있듯이 Web Beans는 배치시 Web Bean 구현을 덮어쓰기하기 위한 정교한 기능을 정의합니다. "
#. Tag: para
#: intro.xml:145
@@ -386,13 +387,13 @@
"Note that not all clients of a Web Bean are Web Beans. Other objects such as "
"Servlets or Message-Driven Beans — which are by nature not injectable, "
"contextual objects — may also obtain references to Web Beans by injection."
-msgstr ""
+msgstr "모든 Web Bean 클라이언트가 Web Beans가 될 수 없음에 유의합니다. Servlets 또는 Message-Driven Beans와 같은 — 본래 삽입 가능한 컨텍스트 객체가 아닌 — 객체는 삽입에 의해 Web Beans에 참조를 획득할 수 있습니다. "
#. Tag: para
#: intro.xml:149
#, no-c-format
msgid "Enough hand-waving. More formally, according to the spec:"
-msgstr ""
+msgstr "보다 공식적으로 spec에 따르면: "
#. Tag: para
#: intro.xml:153
@@ -461,7 +462,7 @@
"Web Beans usually acquire references to other Web Beans via dependency "
"injection. Any injected attribute specifies a \"contract\" that must be "
"satisfied by the Web Bean to be injected. The contract is:"
-msgstr ""
+msgstr "주로 Web Beans는 의존성 삽입을 통해 다른 Web Beans에 참조를 획득합니다. 삽입된 속성은 삽입될 Web Bean을 만족시키는 \"계약\"을 지정합니다. 계약에는 다음과 같은 내용을 지정합니다: "
#. Tag: para
#: intro.xml:177
@@ -484,7 +485,7 @@
"bean-class local view). A binding type represents some client-visible "
"semantic that is satisfied by some implementations of the API and not by "
"others."
-msgstr ""
+msgstr "API는 사용자 정의 클래스 또는 인터페이스입니다. (Web Bean이 EJB 세션 빈일 경우, API 유형은 <literal>@Local</literal> 인터페이스이거나 또는 bean-class 로컬 보기입니다.) 바인딩 유형은 클라이언트-가시성 시멘틱을 나타내는 것으로 API의 일부 구현에 의해 만족됩니다. "
#. Tag: para
#: intro.xml:186
@@ -494,7 +495,7 @@
"themselves annotated <literal>@BindingType</literal>. For example, the "
"following injection point has API type <literal>PaymentProcessor</literal> "
"and binding type <literal>@CreditCard</literal>:"
-msgstr ""
+msgstr "바인딩 유형은 <literal>@BindingType</literal>으로 어노테이션된 사용자 정의 어노테이션에 의해 나타납니다. 예를 들어, 다음과 같은 삽입 지점은 <literal>PaymentProcessor</literal> API 유형 및 <literal>@CreditCard</literal> 바인딩 유형을 갖습니다: "
#. Tag: programlisting
#: intro.xml:191
@@ -508,7 +509,7 @@
msgid ""
"If no binding type is explicitly specified at an injection point, the "
"default binding type <literal>@Current</literal> is assumed."
-msgstr ""
+msgstr "바인딩 유형이 삽입 지점에 명확하게 지정되어 있지 않을 경우, 기본값 바인딩 유형<literal>@Current</literal>가 사용됩니다. "
#. Tag: para
#: intro.xml:196
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1195 - doc/trunk/reference/ko-KR.
by webbeans-commits@lists.jboss.org
Author: eukim
Date: 2009-01-22 23:53:31 -0500 (Thu, 22 Jan 2009)
New Revision: 1195
Modified:
doc/trunk/reference/ko-KR/intro.po
Log:
updated
Modified: doc/trunk/reference/ko-KR/intro.po
===================================================================
--- doc/trunk/reference/ko-KR/intro.po 2009-01-23 04:25:41 UTC (rev 1194)
+++ doc/trunk/reference/ko-KR/intro.po 2009-01-23 04:53:31 UTC (rev 1195)
@@ -8,7 +8,7 @@
"Project-Id-Version: intro\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-06 11:30+0000\n"
-"PO-Revision-Date: 2009-01-23 14:09+1000\n"
+"PO-Revision-Date: 2009-01-23 14:52+1000\n"
"Last-Translator: Eunju Kim <eukim(a)redhat.com>\n"
"Language-Team: Korean <ko(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -35,13 +35,14 @@
#. Tag: para
#: intro.xml:6
#, no-c-format
+#, fuzzy
msgid ""
"So you're already keen to get started writing your first Web Bean? Or "
"perhaps you're skeptical, wondering what kinds of hoops the Web Beans "
"specification will make you jump through! The good news is that you've "
"probably already written and used hundreds, perhaps thousands of Web Beans. "
"You might not even remember the first Web Bean you wrote."
-msgstr ""
+msgstr "첫 번째 Web Bean 작성을 시작해 보시겠습니까? "
#. Tag: title
#: intro.xml:13
@@ -245,10 +246,13 @@
"Bean. The Web Bean manager will inject other Web Beans to the parameters of "
"the constructor or method."
msgstr ""
+"예상하셨듯이, <literal>@Initializer</literal> 어노테이션은 의존성 삽입을 사용하여 실행하기 위한 무엇인가를 갖고 있습니다! <literal>@Initializer</literal>는 생성자 또는 Web Bean 방식에 적용될 수 있으며, Web Bean을 인스턴스화할 때 Web Bean 관리자에게 생성자 또는 Web Bean 방식을 호출할 것을 지시합니다. Web Bean 관리자는 기타 다른 Web "
+"Beans를 생성자 또는 방식의 매개 변수에 삽입하게 됩니다. "
#. Tag: para
#: intro.xml:68
#, no-c-format
+#, fuzzy
msgid ""
"At system initialization time, the Web Bean manager must validate that "
"exactly one Web Bean exists which satisfies each injection point. In our "
@@ -258,7 +262,7 @@
"<literal>UnsatisfiedDependencyException</literal>. If more than one "
"implementation of <literal>Translator</literal> was available, the Web Bean "
"manager would throw an <literal>AmbiguousDependencyException</literal>."
-msgstr ""
+msgstr "시스템 초기화시 Web Bean 관리자는 "
#. Tag: title
#: intro.xml:80
@@ -1001,13 +1005,12 @@
#. Tag: para
#: intro.xml:407
#, no-c-format
-#, fuzzy
msgid ""
"Many Web Beans (including any session or application scoped Web Bean) are "
"available for concurrent access. Therefore, the concurrency management "
"provided by EJB 3.1 is especially useful. Most session and application "
"scoped Web Beans should be EJBs."
-msgstr "다수의 Web Beans (세션 또는 애플리케이션 범위 Web Bean 포함)은 "
+msgstr "다수의 Web Beans (세션 또는 애플리케이션 범위 Web Bean 포함)은 동시 액세스에서 사용 가능합니다. 따라서, EJB 3.1에 의해 제공되는 동시성 관리는 아주 유용합니다. 대부분의 세션 및 애플리케이션 범위 Web Beans는 EJB이어야 합니다. "
#. Tag: para
#: intro.xml:412
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1194 - doc/trunk/reference/ko-KR.
by webbeans-commits@lists.jboss.org
Author: eukim
Date: 2009-01-22 23:25:41 -0500 (Thu, 22 Jan 2009)
New Revision: 1194
Modified:
doc/trunk/reference/ko-KR/intro.po
Log:
updated
Modified: doc/trunk/reference/ko-KR/intro.po
===================================================================
--- doc/trunk/reference/ko-KR/intro.po 2009-01-23 03:46:25 UTC (rev 1193)
+++ doc/trunk/reference/ko-KR/intro.po 2009-01-23 04:25:41 UTC (rev 1194)
@@ -8,7 +8,7 @@
"Project-Id-Version: intro\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-06 11:30+0000\n"
-"PO-Revision-Date: 2009-01-23 13:45+1000\n"
+"PO-Revision-Date: 2009-01-23 14:09+1000\n"
"Last-Translator: Eunju Kim <eukim(a)redhat.com>\n"
"Language-Team: Korean <ko(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -976,7 +976,7 @@
msgid ""
"instance-level passivation for stateful session beans and instance-pooling "
"for stateless session beans,"
-msgstr ""
+msgstr "상태 유지 세션 빈 용 인스턴스 레벨 수동화 및 무상태 세션 빈 용 인스턴스 풀링 "
#. Tag: para
#: intro.xml:397
@@ -1001,12 +1001,13 @@
#. Tag: para
#: intro.xml:407
#, no-c-format
+#, fuzzy
msgid ""
"Many Web Beans (including any session or application scoped Web Bean) are "
"available for concurrent access. Therefore, the concurrency management "
"provided by EJB 3.1 is especially useful. Most session and application "
"scoped Web Beans should be EJBs."
-msgstr ""
+msgstr "다수의 Web Beans (세션 또는 애플리케이션 범위 Web Bean 포함)은 "
#. Tag: para
#: intro.xml:412
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1193 - doc/trunk/reference/ko-KR.
by webbeans-commits@lists.jboss.org
Author: eukim
Date: 2009-01-22 22:46:25 -0500 (Thu, 22 Jan 2009)
New Revision: 1193
Modified:
doc/trunk/reference/ko-KR/intro.po
Log:
updated
Modified: doc/trunk/reference/ko-KR/intro.po
===================================================================
--- doc/trunk/reference/ko-KR/intro.po 2009-01-23 02:21:35 UTC (rev 1192)
+++ doc/trunk/reference/ko-KR/intro.po 2009-01-23 03:46:25 UTC (rev 1193)
@@ -8,7 +8,7 @@
"Project-Id-Version: intro\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-06 11:30+0000\n"
-"PO-Revision-Date: 2009-01-23 12:18+1000\n"
+"PO-Revision-Date: 2009-01-23 13:45+1000\n"
"Last-Translator: Eunju Kim <eukim(a)redhat.com>\n"
"Language-Team: Korean <ko(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -24,6 +24,7 @@
"\n"
"\n"
"\n"
+"\n"
#. Tag: title
#: intro.xml:4
@@ -581,7 +582,7 @@
"literal>, in which case no deployment type need be explicitly specified. All "
"three Web Bean in our example have the deployment type <literal>@Production</"
"literal>."
-msgstr ""
+msgstr "다수의 Web Beans는 배기본값 배치 유형 <literal>@Production</literal>을 사용하므로, 이러한 경우 배치 유형을 명확하게 지정할 필요가 없습니다. 예에서 모든 Web Bean 트리는 <literal>@Production</literal> 배치 유형을 갖습니다. "
#. Tag: para
#: intro.xml:230
@@ -589,7 +590,7 @@
msgid ""
"In a testing environment, we might want to replace the "
"<literal>SentenceTranslator</literal> Web Bean with a \"mock object\":"
-msgstr ""
+msgstr "테스트 환경에서, <literal>SentenceTranslator</literal> Web Bean을 \"모의 객체\"로 교체하고자 합니다: "
#. Tag: programlisting
#: intro.xml:233
@@ -616,7 +617,7 @@
"We would enable the deployment type <literal>@Mock</literal> in our testing "
"environment, to indicate that <literal>MockSentenceTranslator</literal> and "
"any other Web Bean annotated <literal>@Mock</literal> should be used."
-msgstr ""
+msgstr " <literal>MockSentenceTranslator</literal> 및 기타 다른 Web Bean 어노테이션 <literal>@Mock</literal>을 사용해야 함을 나타내기 위해 테스트 환경에서 <literal>@Mock</literal> 배치 유형을 활성화할 수 있습니다. "
#. Tag: para
#: intro.xml:240
@@ -641,7 +642,7 @@
"accommodating arbitrary scopes. However, certain important scopes are built-"
"in to the specification, and provided by the Web Bean manager. A scope is "
"represented by an annotation type."
-msgstr ""
+msgstr "<emphasis>범위</emphasis>는 Web Bean의 수명 주기및 인스턴스의 가시성을 정의합니다. Web Beans 컨텍스트 모델은 확장 가능하고, 임의의 범위를 수용합니다. 하지만, 특정 중요 범위는 사양으로 내장되어 있으며, Web Bean 관리자가 제공합니다. 범위는 어노테이션 유형에 의해 나타납니다. "
#. Tag: para
#: intro.xml:254
@@ -667,17 +668,18 @@
msgid ""
"An instance of a session scoped Web Bean is bound to a user session and is "
"shared by all requests that execute in the context of that session."
-msgstr ""
+msgstr "세션 범위 Web Bean의 인스턴스는 사용자 세션으로 바운딩되어 세션 컨텍스트에서 실행되는 모든 요청에 의해 공유됩니다. "
#. Tag: para
#: intro.xml:262
#, no-c-format
+#, fuzzy
msgid ""
"By default, Web Beans belong to a special scope called the "
"<emphasis>dependent pseudo-scope</emphasis>. Web Beans with this scope are "
"pure dependent objects of the object into which they are injected, and their "
"lifecycle is bound to the lifecycle of that object."
-msgstr ""
+msgstr "기본값으로, Web Beans는 <emphasis>dependent pseudo-scope</emphasis>라는 특정 범위에 속합니다. 이러한 범위를 갖는 Web Beans는 "
#. Tag: para
#: intro.xml:267
@@ -697,7 +699,7 @@
msgid ""
"A Web Bean may have a <emphasis>name</emphasis>, allowing it to be used in "
"Unified EL expressions. It's easy to specify the name of a Web Bean:"
-msgstr ""
+msgstr "Web Bean은 <emphasis>이름</emphasis>을 갖을 수 있으며, Unified EL 표현식에서 사용될 수 있습니다. Web Bean의 이름을 지정하는 것은 쉽습니다: "
#. Tag: programlisting
#: intro.xml:278
@@ -731,7 +733,7 @@
#: intro.xml:284
#, no-c-format
msgid "It's even easier to just let the name be defaulted by the Web Bean manager:"
-msgstr ""
+msgstr "Web Bean 관리자기 이름을 기본값으로 하게 하는 것이 보다 수월합니다: "
#. Tag: programlisting
#: intro.xml:287
@@ -765,7 +767,7 @@
"for EJB beans, but also for plain Java classes. In addition, Web Beans "
"provides a new approach to binding interceptors to EJB beans and other Web "
"Beans."
-msgstr ""
+msgstr "Web Beans는 EJB beans 뿐 만 아니라 일반 Java 클래스에 대해 EJB 3에 의해 정의된 인터셉터 기능을 지원합니다. 이에 더하여, Web Beans는 바인딩 인터셉터, EJB beans 및 기타 다른 Web Beans에 새로운 접근 방식을 제공합니다. "
#. Tag: para
#: intro.xml:302
@@ -773,7 +775,7 @@
msgid ""
"It remains possible to directly specify the interceptor class via use of the "
"<literal>@Interceptors</literal> annotation:"
-msgstr ""
+msgstr "<literal>@Interceptors</literal> 어노테이션의 사용을 통해 인터셉터 클래스를 직접 지정할 수 있습니다: "
#. Tag: programlisting
#: intro.xml:305
@@ -811,13 +813,13 @@
msgid ""
"We'll discuss Web Beans interceptors and decorators in <xref linkend="
"\"interceptors\"/> and <xref linkend=\"decorators\"/>."
-msgstr ""
+msgstr "<xref linkend=\"interceptors\"/> 및 <xref linkend=\"decorators\"/>에서 Web Beans 인터셉터 및 데코레이터에 대해 설명하겠습니다. "
#. Tag: title
#: intro.xml:321
#, no-c-format
msgid "What kinds of objects can be Web Beans?"
-msgstr ""
+msgstr "어떤 종류의 객체가 Web Beans가 될 수 있을까요? "
#. Tag: para
#: intro.xml:323
@@ -825,13 +827,13 @@
msgid ""
"We've already seen that JavaBeans, EJBs and some other Java classes can be "
"Web Beans. But exactly what kinds of objects are Web Beans?"
-msgstr ""
+msgstr "JavaBeans, EJB 및 기타 다른 Java 클래스가 Web Beans이 될 수 있음을 살펴보았습니다. 하지만, 정확히 어떤 종류의 객체가 Web Beans인가요? "
#. Tag: title
#: intro.xml:327
#, no-c-format
msgid "Simple Web Beans"
-msgstr "단순 Web Beans "
+msgstr "심플 Web Beans "
#. Tag: para
#: intro.xml:329
@@ -867,13 +869,13 @@
msgid ""
"it has a constructor with no parameters, or a constructor annotated "
"<literal>@Initializer</literal>."
-msgstr ""
+msgstr "매개 변수 없는 생성자나 또는 <literal>@Initializer</literal> 어노테이션된 생성자를 갖을 경우, "
#. Tag: para
#: intro.xml:349
#, no-c-format
msgid "Thus, almost every JavaBean is a simple Web Bean."
-msgstr ""
+msgstr "따라서, 거의 모든 JavaBean은 심플 Web Bean이 됩니다. "
#. Tag: para
#: intro.xml:351
@@ -960,13 +962,13 @@
#: intro.xml:387
#, no-c-format
msgid "method-level transaction management and security,"
-msgstr ""
+msgstr "메소드-수준 트랜젝션 관리 및 보안 "
#. Tag: para
#: intro.xml:390
#, no-c-format
msgid "concurrency management,"
-msgstr ""
+msgstr "동시성 관리 "
#. Tag: para
#: intro.xml:393
16 years, 8 months