TOMEE-2316 Convert Markdown files to Asciidoc in the docs folder - 2
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/d380ec18 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/d380ec18 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/d380ec18 Branch: refs/heads/master Commit: d380ec1882d75415b288c831797fdbcb09d79c44 Parents: 388460f Author: Carlos Chacin <[email protected]> Authored: Wed Dec 5 22:07:18 2018 -0800 Committer: Carlos Chacin <[email protected]> Committed: Wed Dec 5 22:07:18 2018 -0800 ---------------------------------------------------------------------- docs/basics---getting-things.adoc | 108 +++++++++ docs/basics---getting-things.md | 107 --------- docs/basics---security.adoc | 54 +++++ docs/basics---security.md | 55 ----- docs/basics---transactions.adoc | 67 ++++++ docs/basics---transactions.md | 60 ----- docs/bmpentitycontainer-config.adoc | 53 +++++ docs/bmpentitycontainer-config.md | 37 --- docs/bouncy-castle.adoc | 39 ++++ docs/bouncy-castle.md | 34 --- docs/built-in-type-converters.adoc | 98 ++++++++ docs/built-in-type-converters.md | 94 -------- docs/callbacks.adoc | 165 +++++++++++++ docs/callbacks.md | 167 -------------- docs/changing-jms-implementations.adoc | 158 +++++++++++++ docs/changing-jms-implementations.md | 136 ----------- docs/client-server-transports.adoc | 39 ++++ docs/client-server-transports.md | 22 -- docs/clients.adoc | 95 ++++++++ docs/clients.md | 104 --------- docs/cmpentitycontainer-config.adoc | 51 ++++ docs/cmpentitycontainer-config.md | 36 --- docs/collapsed-ear.adoc | 49 ++++ docs/collapsed-ear.md | 46 ---- docs/common-datasource-configurations.adoc | 116 ++++++++++ docs/common-datasource-configurations.md | 115 --------- docs/common-errors.adoc | 31 +++ docs/common-errors.md | 30 --- docs/common-persistenceprovider-properties.adoc | 47 ++++ docs/common-persistenceprovider-properties.md | 47 ---- docs/comparison.adoc | 231 +++++++++++++++++++ docs/comparison.md | 222 ------------------ docs/concepts.adoc | 83 +++++++ docs/concepts.md | 79 ------- 34 files changed, 1484 insertions(+), 1391 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/basics---getting-things.adoc ---------------------------------------------------------------------- diff --git a/docs/basics---getting-things.adoc b/docs/basics---getting-things.adoc new file mode 100644 index 0000000..e166d37 --- /dev/null +++ b/docs/basics---getting-things.adoc @@ -0,0 +1,108 @@ +# Basics - Getting Things +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + +# Getting Stuff from the Container + +Generally speaking the only way to get a +link:container-managed-resource.html[Container-Managed Resource] is via +_dependency injection_ or _lookup_ from within a [Container-Managed +Component] . + +The _unbreakable rules_. Read these over and over again when things +don't work. + +[arabic] +. java:comp/env is the spec defined namespace for lookup of any +link:container-managed-resource.html[Container-Managed Resource] +. java:comp/env is _empty_ by default +. java:comp/env is _read-only_ at runtime +. java:comp/env is populated by link:declaring-references.html[Declaring +References] to [Container-Managed Resource] via xml or annotation +. only link:container-managed-component.html[Container-Managed +Component] s, _not_ their libraries, can [Declare References|Declaring +References] via xml or annotation +. only link:container-managed-component.html[Container-Managed +Component] s, _not_ their libraries, can get dependency injection of +[Container-Managed Resource] s +. only link:container-managed-component.html[Container-Managed +Component] s, _and_ their libraries, may lookup from java:comp/env +. you _must_ use the _no-arg_ 'new InitialContext()' constructor to +lookup something from java:comp/env +. the annotations and xml for link:declaring-references.html[Declaring +References] are _identical_ in functionality, both _always_ configure +lookup with _optional_ dependency injection + +== Common mistakes, misunderstandings, and myths + +* __"I tried it via annotation and it didn't work, so I used xml and +then it did work"__ + +See rule 9. If one form worked and the other didn't, it means you simply +made a mistake in using one versus the other. Use what works for you, +but understand both annotations or xml will work for either lookup or +injection if used correctly. + +* __"I need to use lookups, so I can't use the annotation"__ + +See rule 9. Annotations are not just for injection, that is just how +they are typically used. Know that when you use an annotation for +injection, it will _always_ create an entry in java:comp/env. As well +you can use the annotation at the _class level_ and it will cause no +dependency injection and only the entry creation in java:comp/env. + +* __"I don't want injection, so I can't use the annotation"__ + +See rule 9 and the above. You can use the annotation at the _class +level_ and it will cause no dependency injection and only the entry +creation in java:comp/env. + +* __"I tried to list java:comp/env but it's empty?!"__ + +See rule 2 and rule 4. There will be nothing in java:comp/env unless you +link:declaring-references.html[Declare a Reference] to it. It does not +matter if is a DataSource configured at the server level, etc. Nothing +is bound into java:comp/env unless you explicitly declare a reference to +it. The Java EE 5 TCK (Technology Compatibility Kit) tests for this +extensively and is a rule we cannot break. Java EE 6 does finally offer +some new namesaces (java:global, java:app, and java:module) which will +offer some great new options for more global-style lookups. + +* __"I deployed the EJB but can't look it up, it's name is Foo"__ + +See rule 2 and the above. Just creating an EJB doesn't cause it to be +added to java:comp/env. If a +link:container-managed-component.html[Container-Managed Component] wants +to lookup the EJB they must [Declare a Reference|Declaring References] +to it via the @EJB annotionation or <ejb-local-ref> or <ejb-ref> in xml. +In Java EE 6, however, EJBs will be automatically bound to +"java:global[/<app-name>]/<module-name>/<bean-name>[!<fully-qualified-interface-name>]" +and can be looked up without declaring a reference first. + +* __"Which InitialContextFactory do I use for java:comp/env?"__ + +See rule 8. You are not allowed to use an InitialContextFactory for +java:comp/env lookups. Setting an InitialContextFactory via +'java.naming.factory.initial' in either System properties, +InitialContext properties, or a jndi.properties file is illegal and will +cause java:comp/env lookups to fail. + +* __"My Client can't lookup the EJB from java:comp/env"__ + +See rule 7. A plain, standalone, Java application cannot use +java:comp/env. There is the official concept of a Java EE Application +Client which can be packaged in an ear and deployed into the Container. +In practice, most people find them restrictive, cumbersome, and hard to +use and are therefore rarely employed in "real world" projects. Most +people opt to use the non-standard, vendor-specific, approach to looking +up EJBs from their plain java clients. In OpenEJB this can be done via +either the RemoteInitialContextFactory (for remote clients) or the +LocalInitialContextFactory (for local clients of an embedded container). +The JNDI names can be configured as link:jndi-names.html[shown here] . + +* __"I declared the reference, but still can't look it up"__ + +See all of the above and reread the rules a few times. Always check the +log output as well. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/basics---getting-things.md ---------------------------------------------------------------------- diff --git a/docs/basics---getting-things.md b/docs/basics---getting-things.md deleted file mode 100644 index 2f3a691..0000000 --- a/docs/basics---getting-things.md +++ /dev/null @@ -1,107 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=Basics - Getting Things -~~~~~~ -<a name="Basics-GettingThings-GettingStufffromtheContainer"></a> -# Getting Stuff from the Container - -Generally speaking the only way to get a [Container-Managed Resource](container-managed-resource.html) - is via *dependency injection* or *lookup* from within a [Container-Managed Component] -. - -The *unbreakable rules*. Read these over and over again when things don't -work. - -1. java:comp/env is the spec defined namespace for lookup of any [Container-Managed Resource](container-managed-resource.html) -1. java:comp/env is *empty* by default -1. java:comp/env is *read-only* at runtime -1. java:comp/env is populated by [Declaring References](declaring-references.html) - to [Container-Managed Resource] - via xml or annotation -1. only [Container-Managed Component](container-managed-component.html) -s, *not* their libraries, can [Declare References|Declaring References] - via xml or annotation -1. only [Container-Managed Component](container-managed-component.html) -s, *not* their libraries, can get dependency injection of [Container-Managed Resource] -s -1. only [Container-Managed Component](container-managed-component.html) -s, *and* their libraries, may lookup from java:comp/env -1. you *must* use the *no-arg* 'new InitialContext()' constructor to -lookup something from java:comp/env -1. the annotations and xml for [Declaring References](declaring-references.html) - are *identical* in functionality, both *always* configure lookup with -*optional* dependency injection - -<a name="Basics-GettingThings-Commonmistakes,misunderstandings,andmyths"></a> -## Common mistakes, misunderstandings, and myths - -- *_"I tried it via annotation and it didn't work, so I used xml and then -it did work"_* - -See rule 9. If one form worked and the other didn't, it means you simply -made a mistake in using one versus the other. Use what works for you, but -understand both annotations or xml will work for either lookup or injection -if used correctly. - -- *_"I need to use lookups, so I can't use the annotation"_* - -See rule 9. Annotations are not just for injection, that is just how they -are typically used. Know that when you use an annotation for injection, it -will *always* create an entry in java:comp/env. As well you can use the -annotation at the *class level* and it will cause no dependency injection -and only the entry creation in java:comp/env. - -- *_"I don't want injection, so I can't use the annotation"_* - -See rule 9 and the above. You can use the annotation at the *class level* -and it will cause no dependency injection and only the entry creation in -java:comp/env. - -- *_"I tried to list java:comp/env but it's empty?!"_* - -See rule 2 and rule 4. There will be nothing in java:comp/env unless you [Declare a Reference](declaring-references.html) - to it. It does not matter if is a DataSource configured at the server -level, etc. Nothing is bound into java:comp/env unless you explicitly -declare a reference to it. The Java EE 5 TCK (Technology Compatibility -Kit) tests for this extensively and is a rule we cannot break. Java EE 6 -does finally offer some new namesaces (java:global, java:app, and -java:module) which will offer some great new options for more global-style -lookups. - -- *_"I deployed the EJB but can't look it up, it's name is Foo"_* - -See rule 2 and the above. Just creating an EJB doesn't cause it to be -added to java:comp/env. If a [Container-Managed Component](container-managed-component.html) - wants to lookup the EJB they must [Declare a Reference|Declaring References] - to it via the @EJB annotionation or <ejb-local-ref> or <ejb-ref> in xml. -In Java EE 6, however, EJBs will be automatically bound to -"java:global[/<app-name>]/<module-name>/<bean-name>[!<fully-qualified-interface-name>]" -and can be looked up without declaring a reference first. - -- *_"Which InitialContextFactory do I use for java:comp/env?"_* - -See rule 8. You are not allowed to use an InitialContextFactory for -java:comp/env lookups. Setting an InitialContextFactory via -'java.naming.factory.initial' in either System properties, InitialContext -properties, or a jndi.properties file is illegal and will cause -java:comp/env lookups to fail. - -- *_"My Client can't lookup the EJB from java:comp/env"_* - -See rule 7. A plain, standalone, Java application cannot use -java:comp/env. There is the official concept of a Java EE Application -Client which can be packaged in an ear and deployed into the Container. In -practice, most people find them restrictive, cumbersome, and hard to use -and are therefore rarely employed in "real world" projects. Most people -opt to use the non-standard, vendor-specific, approach to looking up EJBs -from their plain java clients. In OpenEJB this can be done via either the -RemoteInitialContextFactory (for remote clients) or the -LocalInitialContextFactory (for local clients of an embedded container). -The JNDI names can be configured as [shown here](jndi-names.html) -. - -- *_"I declared the reference, but still can't look it up"_* - -See all of the above and reread the rules a few times. Always check the -log output as well. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/basics---security.adoc ---------------------------------------------------------------------- diff --git a/docs/basics---security.adoc b/docs/basics---security.adoc new file mode 100644 index 0000000..56b5ec6 --- /dev/null +++ b/docs/basics---security.adoc @@ -0,0 +1,54 @@ +# Basics - Security +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + +This section is under construction, please check back later. + +== Related Documents + +link:security.html[Security] - login module configuration +link:security-annotations.html[Security Annotations] - EJB3 related +annotation based security. + +== Server Side Security + +There's a few things that should be noted about security from the server +side perspective. + +=== Security Propagation Note, this is partially documented in the EJB 3 +spec section 14.8.1.1. + +[arabic] +. Once a remote bean has been instantiated, from within the container, +it inherits the entire security context, and all roles will be inherited +the same as the method where the bean is being looked up. +. Looking up a bean via an `InitialContext`, or via injection, will +inherit the security context (user, roles, etc), thereby propagating the +security through to any container bean in the chain of method calls. +. No properties are allowed for the `InitialContext`, and you _MUST_ be +calling the no args constructor only. There are documents elsewhere that +describe using the OpenEJB initial context factories and such, with +usernames and passwords, etc; it should be noted that this method of +using the factories is OpenEJB specific, to facilitate non-standard +clients not running in an EJB container, etc. + +For example, here is an EJB that returns another bean, through a remote +method call. In this case, the _OtherBean_ instance, will have the same +security as _MyBean_, including the principal (username), roles, etc. + +.... +import javax.ejb.EJB; +import javax.naming.InitialContext; + +@EJB(name = "otherBean", beanInterface = IOtherBean.class) +public class MyBean +{ + public IOtherBean getOtherBean() + { + InitialContext context = new InitialContext(); + return (IOtherBean) context.lookup("java:comp/env/otherBean"); + } +} +.... http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/basics---security.md ---------------------------------------------------------------------- diff --git a/docs/basics---security.md b/docs/basics---security.md deleted file mode 100644 index 135cfa5..0000000 --- a/docs/basics---security.md +++ /dev/null @@ -1,55 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=Basics - Security -~~~~~~ -This section is under construction, please check back later. - -<a name="Basics-Security-RelatedDocuments"></a> -## Related Documents - -[Security](security.html) - \- login module configuration -[Security Annotations](security-annotations.html) - \- EJB3 related annotation based security. - -<a name="Basics-Security-ServerSideSecurity"></a> -## Server Side Security - -There's a few things that should be noted about security from the server -side perspective. - -<a name="Basics-Security-SecurityPropagation"></a> -### Security Propagation -Note, this is partially documented in the EJB 3 spec section 14.8.1.1. - -1. Once a remote bean has been instantiated, from within the container, it -inherits the entire security context, and all roles will be inherited the -same as the method where the bean is being looked up. -1. Looking up a bean via an `InitialContext`, or via injection, will inherit -the security context (user, roles, etc), thereby propagating the security -through to any container bean in the chain of method calls. -1. No properties are allowed for the `InitialContext`, and you *MUST* be -calling the no args constructor only. There are documents elsewhere that -describe using the OpenEJB initial context factories and such, with -usernames and passwords, etc; it should be noted that this method of using -the factories is OpenEJB specific, to facilitate non-standard clients not -running in an EJB container, etc. - -For example, here is an EJB that returns another bean, through a remote -method call. In this case, the *OtherBean* instance, will have the same -security as *MyBean*, including the principal (username), roles, etc. - - - import javax.ejb.EJB; - import javax.naming.InitialContext; - - @EJB(name = "otherBean", beanInterface = IOtherBean.class) - public class MyBean - { - public IOtherBean getOtherBean() - { - InitialContext context = new InitialContext(); - return (IOtherBean) context.lookup("java:comp/env/otherBean"); - } - } http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/basics---transactions.adoc ---------------------------------------------------------------------- diff --git a/docs/basics---transactions.adoc b/docs/basics---transactions.adoc new file mode 100644 index 0000000..3441f84 --- /dev/null +++ b/docs/basics---transactions.adoc @@ -0,0 +1,67 @@ +# Basics - Transactions +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + +One of the many benefits of EJB, is that +transactions within the EJB container are generally managed entirely +automatically. Any EJB component will, by default, partake in that +transaction. + +Here are some basic rules to understand about transactions. Keep note +that this is the default behaviour, and the system can be configured to +behave differently, depending on the needs of your system, bean, or +individual methods of your beans. + +== Participants + +Various components and parts of the EJB system can be part of a +transaction. Examples are + +[arabic] +. Session bean +. Message Driven Bean +. EntityManager (a.k.a. Persistence context) + +== Behaviour + +The basic default behaviours are 1. A transaction starts at the +beginning of the first EJB method call, in a chain of calls that are +participating in the given transaction 1. A transaction ends at the end +of the first EJB method, in the same chain 1. If a bean that has started +a transaction, uses another bean, that bean will automatically use the +same transaction as the calling bean. + +== Configuration + +You can configure your beans in a variety of ways. Generally speaking, a +transaction is started when a method is called, but can be configured +using @TransactionAttribute(value = TransactionAttributeType.X), where X +is one of... + +[arabic] +. REQUIRED - the default, which is to start a transaction if one does +not exist, but to use the existing one if it has already been started. +. REQUIRES_NEW - the transaction is created on every call, and ends when +the call is completed. Beans don't partake in transactions created by +other parts of the system. +. MANDATORY - a transaction must always exist prior to the call, and it +will be used. It is an error otherwise +. NOT_SUPPORTED - component not included in the transaction +. SUPPORTS - transaction will be used if it exists, but will not be +created if it does not exist +. NEVER - if a transaction exists, it is an error to call the method + +@TransactionAttribute applies to both methods and entire beans. You may +set one type of transaction behaviour (as seen above) on the bean, and a +different one on a specific method of that same bean, which overrides +the one configured for the overall bean. For instance, maybe you want to +make an audit entry in the database that you are about to attempt a +credit card payment. It really needs to be in it's own transaction so +that it is IMMEDIATELY committed for audit purposes, if something goes +wrong with the credit card payment. So, perhaps you use MANDATORY on the +bean, and REQUIRES_NEW on the method for audit logging. As soon as the +method that does the audit logging is complete, the transaction is +committed, and the credit card payment transaction continues on it's +way. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/basics---transactions.md ---------------------------------------------------------------------- diff --git a/docs/basics---transactions.md b/docs/basics---transactions.md deleted file mode 100644 index a173c5f..0000000 --- a/docs/basics---transactions.md +++ /dev/null @@ -1,60 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=Basics - Transactions -~~~~~~ -One of the many benefits of EJB, is that transactions within the EJB -container are generally managed entirely automatically. Any EJB component -will, by default, partake in that transaction. - -Here are some basic rules to understand about transactions. Keep note that -this is the default behaviour, and the system can be configured to behave -differently, depending on the needs of your system, bean, or individual -methods of your beans. - -<a name="Basics-Transactions-Participants"></a> -## Participants - -Various components and parts of the EJB system can be part of a -transaction. Examples are - -1. Session bean -1. Message Driven Bean -1. EntityManager (a.k.a. Persistence context) - -<a name="Basics-Transactions-Behaviour"></a> -## Behaviour - -The basic default behaviours are -1. A transaction starts at the beginning of the first EJB method call, in a -chain of calls that are participating in the given transaction -1. A transaction ends at the end of the first EJB method, in the same chain -1. If a bean that has started a transaction, uses another bean, that bean -will automatically use the same transaction as the calling bean. - -<a name="Basics-Transactions-Configuration"></a> -## Configuration - -You can configure your beans in a variety of ways. Generally speaking, a -transaction is started when a method is called, but can be configured using -@TransactionAttribute(value = TransactionAttributeType.X), where X is one -of... - -1. REQUIRED - the default, which is to start a transaction if one does not exist, but to use the existing one if it has already been started. -1. REQUIRES_NEW - the transaction is created on every call, and ends when the call is completed. Beans don't partake in transactions created by other parts of the system. -1. MANDATORY - a transaction must always exist prior to the call, and it will be used. It is an error otherwise -1. NOT_SUPPORTED - component not included in the transaction -1. SUPPORTS - transaction will be used if it exists, but will not be created if it does not exist -1. NEVER - if a transaction exists, it is an error to call the method - -@TransactionAttribute applies to both methods and entire beans. You may -set one type of transaction behaviour (as seen above) on the bean, and a -different one on a specific method of that same bean, which overrides the -one configured for the overall bean. For instance, maybe you want to make -an audit entry in the database that you are about to attempt a credit card -payment. It really needs to be in it's own transaction so that it is -IMMEDIATELY committed for audit purposes, if something goes wrong with the -credit card payment. So, perhaps you use MANDATORY on the bean, and -REQUIRES_NEW on the method for audit logging. As soon as the method that -does the audit logging is complete, the transaction is committed, and the -credit card payment transaction continues on it's way. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/bmpentitycontainer-config.adoc ---------------------------------------------------------------------- diff --git a/docs/bmpentitycontainer-config.adoc b/docs/bmpentitycontainer-config.adoc new file mode 100644 index 0000000..977b873 --- /dev/null +++ b/docs/bmpentitycontainer-config.adoc @@ -0,0 +1,53 @@ +# BmpEntityContainer Configuration +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + + +A BmpEntityContainer can be declared via xml in the +`<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file +using a declaration like the following. All properties in the element +body are optional. + +.... +<Container id="myBmpEntityContainer" type="BMP_ENTITY"> + poolSize = 10 +</Container> +.... + +Alternatively, a BmpEntityContainer can be declared via properties in +the `<tomee-home>/conf/system.properties` file or via Java +VirtualMachine `-D` properties. The properties can also be used when +embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or +`InitialContext` + +.... +myBmpEntityContainer = new://Container?type=BMP_ENTITY +myBmpEntityContainer.poolSize = 10 +.... + +Properties and xml can be mixed. Properties will override the xml +allowing for easy configuration change without the need for $\{} style +variable substitution. Properties are not case sensitive. If a property +is specified that is not supported by the declared BmpEntityContainer a +warning will be logged. If a BmpEntityContainer is needed by the +application and one is not declared, TomEE will create one dynamically +using default settings. Multiple BmpEntityContainer declarations are +allowed. # Supported Properties + +Property + +Type + +Default + +Description + +poolSize + +int + +10 + +Specifies the size of the bean pools for this bmp entity container. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/bmpentitycontainer-config.md ---------------------------------------------------------------------- diff --git a/docs/bmpentitycontainer-config.md b/docs/bmpentitycontainer-config.md deleted file mode 100644 index 5223e35..0000000 --- a/docs/bmpentitycontainer-config.md +++ /dev/null @@ -1,37 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=BmpEntityContainer Configuration -~~~~~~ - - -A BmpEntityContainer can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following. All properties in the element body are optional. - - <Container id="myBmpEntityContainer" type="BMP_ENTITY"> - poolSize = 10 - </Container> - -Alternatively, a BmpEntityContainer can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties. The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext` - - myBmpEntityContainer = new://Container?type=BMP_ENTITY - myBmpEntityContainer.poolSize = 10 - -Properties and xml can be mixed. Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution. Properties are not case sensitive. If a property is specified that is not supported by the declared BmpEntityContainer a warning will be logged. If a BmpEntityContainer is needed by the application and one is not declared, TomEE will create one dynamically using default settings. Multiple BmpEntityContainer declarations are allowed. -# Supported Properties -<table class="mdtable"> -<tr> -<th>Property</th> -<th>Type</th> -<th>Default</th> -<th>Description</th> -</tr> -<tr> - <td>poolSize</td> - <td>int</td> - <td>10</td> - <td> -Specifies the size of the bean pools for this -bmp entity container. -</td> -</tr> -</table> http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/bouncy-castle.adoc ---------------------------------------------------------------------- diff --git a/docs/bouncy-castle.adoc b/docs/bouncy-castle.adoc new file mode 100644 index 0000000..f8288d0 --- /dev/null +++ b/docs/bouncy-castle.adoc @@ -0,0 +1,39 @@ +# Installing Bouncy Castle +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + +NOTE: Licensed to the Apache Software Foundation (ASF) +under one or more contributor license agreements. See the NOTICE file +distributed with this work for additional information regarding +copyright ownership. The ASF licenses this file to you under the Apache +License, Version 2.0 (the "License"); you may not use this file except +in compliance with the License. You may obtain a copy of the License at +. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by +applicable law or agreed to in writing, software distributed under the +License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for +the specific language governing permissions and limitations under the +License. + +Installation of Bouncy Castle for use in TomEE itself is done in two +steps: + +[arabic] +. Add the Bouncy Castle provider jar to the `$JAVA_HOME/jre/lib/ext` +directory +. Create a Bouncy Castle provider entry in the +`$JAVA_HOME/jre/lib/security/java.security` file + +The entry to `java.security` will look something like the following: + +.... +security.provider.N=org.bouncycastle.jce.provider.BouncyCastleProvider +.... + +Replace `N` with the order of precedence you would like to give Bouncy +Castle in comparison to the other providers in the file. *Recommended* +would be the last entry in the list -- `N` being the higest number in +the list. *Warning* that configuring Bouncy Castle as the first +provider, `security.provider.1`, may cause JVM errors. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/bouncy-castle.md ---------------------------------------------------------------------- diff --git a/docs/bouncy-castle.md b/docs/bouncy-castle.md deleted file mode 100644 index d2fff7b..0000000 --- a/docs/bouncy-castle.md +++ /dev/null @@ -1,34 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=Installing Bouncy Castle -~~~~~~ -Notice: Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - . - http://www.apache.org/licenses/LICENSE-2.0 - . - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - -Installation of Bouncy Castle for use in TomEE itself is done in two steps: - - 1. Add the Bouncy Castle provider jar to the `$JAVA_HOME/jre/lib/ext` directory - 1. Create a Bouncy Castle provider entry in the `$JAVA_HOME/jre/lib/security/java.security` file - -The entry to `java.security` will look something like the following: - - security.provider.N=org.bouncycastle.jce.provider.BouncyCastleProvider - -Replace `N` with the order of precedence you would like to give Bouncy Castle in comparison to the -other providers in the file. **Recommended** would be the last entry in the list -- `N` being the higest number in the list. -**Warning** that configuring Bouncy Castle as the first provider, `security.provider.1`, may cause JVM errors. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/built-in-type-converters.adoc ---------------------------------------------------------------------- diff --git a/docs/built-in-type-converters.adoc b/docs/built-in-type-converters.adoc new file mode 100644 index 0000000..b8ab7c5 --- /dev/null +++ b/docs/built-in-type-converters.adoc @@ -0,0 +1,98 @@ +# Built-in Type Converters +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + +The following built-in types are supported for +@Resource injection in EJBs via elements in a META-INF/ejb-jar.xml or +via plain properties in a META-INF/env-entries.properties file. + +EJB 3.0 required types: + +* java.lang.Boolean +* java.lang.Byte +* java.lang.Character +* java.lang.Double +* java.lang.Float +* java.lang.Integer +* java.lang.Long +* java.lang.Short +* java.lang.String + +OpenEJB 3.0 additional types: + +* java.lang.Class +* java.lang.Enum (any subclass of) +* java.io.File +* java.math.BigDecimal +* java.math.BigInteger +* java.net.Inet4Address +* java.net.Inet6Address +* java.net.InetAddress +* java.net.URI +* java.net.URL +* java.util.ArrayList +* java.util.Date +* java.util.HashMap +* java.util.Hashtable +* java.util.IdentityHashMap +* java.util.LinkedHashMap +* java.util.LinkedHashSet +* java.util.LinkedList +* java.util.List +* java.util.Map +* java.util.Properties +* java.util.Set +* java.util.SortedMap +* java.util.TreeMap +* java.util.TreeSet +* java.util.Vector +* java.util.WeakHashMap +* java.util.logging.Logger +* java.util.regex.Pattern +* javax.management.ObjectName +* javax.naming.Context +* org.apache.commons.logging.Log +* org.apache.log4j.Logger + +To use an OpenEJB additional type in xml, simply declare it as +java.lang.String and it will be converted on the fly to the field/setter +type used by the bean class. For example: + +.... +package org.superbiz.foo; + +import java.util.Date; + +@Stateless +public class MyBean { + + @Resource + private Date myDate; +} +.... + +Works with an ejb-jar.xml as follows: + +.... +<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" +metadata-complete="false"> + <enterprise-beans> + <session> + <ejb-name>MyBean</ejb-name> + <env-entry> + <env-entry-name>org.superbiz.foo.MyBean/myDate</env-entry-name> + <env-entry-value>2008-04-19</env-entry-value> + <env-entry-type>java.lang.String</env-entry-type> + </env-entry> + </session> + </enterprise-beans> +</ejb-jar> +.... + +Or with an env-entries.properties file as follows: + +.... +org.superbiz.foo.MyBean/myDate = 2008-04-19 +.... http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/built-in-type-converters.md ---------------------------------------------------------------------- diff --git a/docs/built-in-type-converters.md b/docs/built-in-type-converters.md deleted file mode 100644 index b94a545..0000000 --- a/docs/built-in-type-converters.md +++ /dev/null @@ -1,94 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=Built-in Type Converters -~~~~~~ -The following built-in types are supported for @Resource injection in EJBs -via <env-entry> elements in a META-INF/ejb-jar.xml or via plain properties -in a META-INF/env-entries.properties file. - -EJB 3.0 required types: - - - java.lang.Boolean - - java.lang.Byte - - java.lang.Character - - java.lang.Double - - java.lang.Float - - java.lang.Integer - - java.lang.Long - - java.lang.Short - - java.lang.String - -OpenEJB 3.0 additional types: - - - java.lang.Class - - java.lang.Enum (any subclass of) - - java.io.File - - java.math.BigDecimal - - java.math.BigInteger - - java.net.Inet4Address - - java.net.Inet6Address - - java.net.InetAddress - - java.net.URI - - java.net.URL - - java.util.ArrayList - - java.util.Date - - java.util.HashMap - - java.util.Hashtable - - java.util.IdentityHashMap - - java.util.LinkedHashMap - - java.util.LinkedHashSet - - java.util.LinkedList - - java.util.List - - java.util.Map - - java.util.Properties - - java.util.Set - - java.util.SortedMap - - java.util.TreeMap - - java.util.TreeSet - - java.util.Vector - - java.util.WeakHashMap - - java.util.logging.Logger - - java.util.regex.Pattern - - javax.management.ObjectName - - javax.naming.Context - - org.apache.commons.logging.Log - - org.apache.log4j.Logger - -To use an OpenEJB additional type in xml, simply declare it as -<env-entry-type>java.lang.String</env-entry-type> and it will be converted -on the fly to the field/setter type used by the bean class. For example: - - - package org.superbiz.foo; - - import java.util.Date; - - @Stateless - public class MyBean { - - @Resource - private Date myDate; - } - - -Works with an ejb-jar.xml as follows: - - <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" - metadata-complete="false"> - <enterprise-beans> - <session> - <ejb-name>MyBean</ejb-name> - <env-entry> - <env-entry-name>org.superbiz.foo.MyBean/myDate</env-entry-name> - <env-entry-value>2008-04-19</env-entry-value> - <env-entry-type>java.lang.String</env-entry-type> - </env-entry> - </session> - </enterprise-beans> - </ejb-jar> - - -Or with an env-entries.properties file as follows: - - org.superbiz.foo.MyBean/myDate = 2008-04-19 http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/callbacks.adoc ---------------------------------------------------------------------- diff --git a/docs/callbacks.adoc b/docs/callbacks.adoc new file mode 100644 index 0000000..0e227b6 --- /dev/null +++ b/docs/callbacks.adoc @@ -0,0 +1,165 @@ +# Callbacks +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + +Correct usage of PostConstruct, PreDestroy, PrePassivate, PostActivate, +and AroundInvoke for EJBs and Interceptors. + +For Stateful, Stateless, and MessageDriven, the syntax is as follows: + +* @PostConstruct <any-scope> void <method-name>() +* @PreDestroy <any-scope> void <method-name>() +* @PrePassivate <any-scope> void <method-name>() +* @PostActivate <any-scope> void <method-name>() + +For an Interceptor, the syntax includes InvocationContext as follows: + +* @PostConstruct <any-scope> void <method-name>(InvocationContext) +* @PreDestroy <any-scope> void <method-name>(InvocationContext) +* @PrePassivate <any-scope> void <method-name>(InvocationContext) +* @PostActivate <any-scope> void <method-name>(InvocationContext) + +The AroundInvoke syntax for an EJB or Interceptor is the same: + +* @AroundInvoke <any-scope> Object <method-name>(InvocationContext) +throws Exception + +== Stateless + +.... +import javax.ejb.Stateless; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +@Stateless +public class MyStatelessBean implements MyBusinessInterface { + + @PostConstruct + public void constructed(){ + + } + + @PreDestroy + public void destroy(){ + + } + + @AroundInvoke + public Object invoke(InvocationContext invocationContext) throws Exception { + return invocationContext.proceed(); + } +} +.... + +== Stateful + +.... +import javax.ejb.Stateful; +import javax.ejb.PostActivate; +import javax.ejb.PrePassivate; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +@Stateful +public class MyStatefulBean implements MyBusinessInterface { + + @PostConstruct + public void constructed(){ + + } + + @PreDestroy + public void destroy(){ + + } + + @AroundInvoke + public Object invoke(InvocationContext invocationContext) throws Exception { + return invocationContext.proceed(); + } + + @PostActivate + public void activated(){ + + } + + @PrePassivate + public void passivate(){ + + } +} +.... + +== MessageDriven + +.... +import javax.ejb.MessageDriven; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +@MessageDriven +public class MyMessageDrivenBean implements MyListenerInterface { + + @PostConstruct + public void constructed(){ + + } + + @PreDestroy + public void destroy(){ + + } + + @AroundInvoke + public Object invoke(InvocationContext invocationContext) throws Exception { + return invocationContext.proceed(); + } +} +.... + +== Interceptor + +.... +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.interceptor.InvocationContext; +import javax.interceptor.AroundInvoke; +import javax.ejb.PostActivate; +import javax.ejb.PrePassivate; + +public class MyInterceptor { + + @PostConstruct + public void constructed(InvocationContext invocationContext){ + + } + + @PreDestroy + public void destroy(InvocationContext invocationContext){ + + } + + @AroundInvoke + public Object invoke(InvocationContext invocationContext) throws Exception { + return invocationContext.proceed(); + } + + @PostActivate + public void activated(InvocationContext invocationContext){ + + } + + @PrePassivate + public void passivate(InvocationContext invocationContext){ + + } +} +.... http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/callbacks.md ---------------------------------------------------------------------- diff --git a/docs/callbacks.md b/docs/callbacks.md deleted file mode 100644 index d8016b1..0000000 --- a/docs/callbacks.md +++ /dev/null @@ -1,167 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=Callbacks -~~~~~~ -Correct usage of PostConstruct, PreDestroy, PrePassivate, PostActivate, and -AroundInvoke for EJBs and Interceptors. - -For Stateful, Stateless, and MessageDriven, the syntax is as follows: - - - @PostConstruct <any-scope> void <method-name>() - - @PreDestroy <any-scope> void <method-name>() - - @PrePassivate <any-scope> void <method-name>() - - @PostActivate <any-scope> void <method-name>() - -For an Interceptor, the syntax includes InvocationContext as follows: - - - @PostConstruct <any-scope> void <method-name>(InvocationContext) - - @PreDestroy <any-scope> void <method-name>(InvocationContext) - - @PrePassivate <any-scope> void <method-name>(InvocationContext) - - @PostActivate <any-scope> void <method-name>(InvocationContext) - -The AroundInvoke syntax for an EJB or Interceptor is the same: - - - @AroundInvoke <any-scope> Object <method-name>(InvocationContext) throws Exception - - -<a name="Callbacks-Stateless"></a> -## Stateless - - - import javax.ejb.Stateless; - import javax.annotation.PostConstruct; - import javax.annotation.PreDestroy; - import javax.interceptor.AroundInvoke; - import javax.interceptor.InvocationContext; - - @Stateless - public class MyStatelessBean implements MyBusinessInterface { - - @PostConstruct - public void constructed(){ - - } - - @PreDestroy - public void destroy(){ - - } - - @AroundInvoke - public Object invoke(InvocationContext invocationContext) throws Exception { - return invocationContext.proceed(); - } - } - - -<a name="Callbacks-Stateful"></a> -## Stateful - - - import javax.ejb.Stateful; - import javax.ejb.PostActivate; - import javax.ejb.PrePassivate; - import javax.annotation.PostConstruct; - import javax.annotation.PreDestroy; - import javax.interceptor.AroundInvoke; - import javax.interceptor.InvocationContext; - - @Stateful - public class MyStatefulBean implements MyBusinessInterface { - - @PostConstruct - public void constructed(){ - - } - - @PreDestroy - public void destroy(){ - - } - - @AroundInvoke - public Object invoke(InvocationContext invocationContext) throws Exception { - return invocationContext.proceed(); - } - - @PostActivate - public void activated(){ - - } - - @PrePassivate - public void passivate(){ - - } - } - - -<a name="Callbacks-MessageDriven"></a> -## MessageDriven - - - import javax.ejb.MessageDriven; - import javax.annotation.PostConstruct; - import javax.annotation.PreDestroy; - import javax.interceptor.AroundInvoke; - import javax.interceptor.InvocationContext; - - @MessageDriven - public class MyMessageDrivenBean implements MyListenerInterface { - - @PostConstruct - public void constructed(){ - - } - - @PreDestroy - public void destroy(){ - - } - - @AroundInvoke - public Object invoke(InvocationContext invocationContext) throws Exception { - return invocationContext.proceed(); - } - } - - -<a name="Callbacks-Interceptor"></a> -## Interceptor - - - import javax.annotation.PostConstruct; - import javax.annotation.PreDestroy; - import javax.interceptor.InvocationContext; - import javax.interceptor.AroundInvoke; - import javax.ejb.PostActivate; - import javax.ejb.PrePassivate; - - public class MyInterceptor { - - @PostConstruct - public void constructed(InvocationContext invocationContext){ - - } - - @PreDestroy - public void destroy(InvocationContext invocationContext){ - - } - - @AroundInvoke - public Object invoke(InvocationContext invocationContext) throws Exception { - return invocationContext.proceed(); - } - - @PostActivate - public void activated(InvocationContext invocationContext){ - - } - - @PrePassivate - public void passivate(InvocationContext invocationContext){ - - } - } http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/changing-jms-implementations.adoc ---------------------------------------------------------------------- diff --git a/docs/changing-jms-implementations.adoc b/docs/changing-jms-implementations.adoc new file mode 100644 index 0000000..b1dde18 --- /dev/null +++ b/docs/changing-jms-implementations.adoc @@ -0,0 +1,158 @@ +# Changing JMS Implementations +:index-group: Configuration +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + +NOTE: Licensed to the Apache Software +Foundation (ASF) under one or more contributor license agreements. See +the NOTICE file distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file to you under +the Apache License, Version 2.0 (the "License"); you may not use this +file except in compliance with the License. You may obtain a copy of the +License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless +required by applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES +OR CONDITIONS OF ANY KIND, either express or implied. See the License +for the specific language governing permissions and limitations under +the License. + +ActiveMQ is the default JMS provider in Apache TomEE and OpenEJB. + +Changing JMS implementation is as simple as using that implementation's +Java EE Connector. The connector which will be a `.rar` file should be +bundled with the application in a `.ear` file. All JMS usage in that +`.ear` will favor the JMS ConnectionFactory and Topic and Queue +implementations that are configured in the `.rar` file rather than +ActiveMQ. + +If the JMS implementation does not have a `.rar` file, there are still +some options for wiring in an alternate implementation. + +== Generic JMS Resource Adapter + +If the JMS implementation does not have a Resource Archive (`.rar` file) +that defines a compliant Resource Adapter, the +http://genericjmsra.java.net/[Generic Resource Adapter for JMS] should +work fine. + +To use this Adapter in TomEE or OpenEJB you'll need to create a +`service-jar.xml` file and include that in a jar file and add it to the +`<tomee.home>/lib/` directory. Then you can declare `ConnectionFactory`, +`Topic`, and `Queue` and more via the `tomee.xml` file. + +The one below should be considered boiler plate. Updating it to contain +some useful default values for your JMS implementation would be good. +These values can be overridden in the `tomee.xml` or `openejb.xml` + +Let's say that the following file lives in the jar at +`META-INF/org.superbiz/service-jar.xml` + +.... +<?xml version="1.0" encoding="UTF-8"?> +<ServiceJar> + <ServiceProvider + id="genericra" + service="Resource" + types="GenericJMSRA" + class-name="com.sun.genericra.GenericJMSRA"> + UserName + Password + ProviderIntegrationMode + ConnectionFactoryClassName + QueueConnectionFactoryClassName + TopicConnectionFactoryClassName + XAConnectionFactoryClassName + XAQueueConnectionFactoryClassName + XATopicConnectionFactoryClassName + UnifiedDestinationClassName + TopicClassName + QueueClassName + SupportsXA + ConnectionFactoryProperties + JndiProperties + CommonSetterMethodName + RMPolicy + LogLevel + DeliveryType + UseFirstXAForRedelivery + </ServiceProvider> + + <ServiceProvider + id="ConnectionFactory" + service="Resource" + types="javax.jms.ConnectionFactory, javax.jms.QueueConnectionFactory, javax.jms.TopicConnectionFactory, QueueConnectionFactory, TopicConnectionFactory" + class-name="com.sun.genericra.outbound.ManagedJMSConnectionFactory"> + ConnectionFactoryJndiName + ClientId + ConnectionValidationEnabled + ResourceAdapter + </ServiceProvider> + + <ServiceProvider + id="Queue" + service="Resource" + types="javax.jms.Queue, Queue" + class-name="com.sun.genericra.outbound.QueueProxy"> + DestinationJndiName + ResourceAdapter + UserName + Password + JndiProperties + QueueClassName + </ServiceProvider> + + <ServiceProvider + id="Topic" + service="Resource" + types="javax.jms.Topic, Topic" + class-name="com.sun.genericra.outbound.TopicProxy"> + DestinationJndiName + ResourceAdapter + UserName + Password + JndiProperties + TopicClassName + </ServiceProvider> +</ServiceJar> +.... + +It is strongly recommended to not leave the values in the +service-jar.xml file blank as shown above. It is possible to setup +several sets of defaults in a `service-jar.xml` or via several +`service-jar.xml` files. + +Once this file is packed in a jar and added to the `<tomee.home>/lib` or +`<openejb.home>/lib` directory, you can then declare and configure +"instances" of these things in your `tomee.xml` or `openejb.xml` config +file as follows: + +.... +<Resource id="My Generic Adapter" type="GenericJMSRA" provider="org.superbiz:genericra"> +AdapterProperty1 PropertyValue1 +AdapterProperty2 PropertyValue2 +... +</Resource> +.... + +Or in properties like so: + +.... +myGenericAdapter = new://Resource?type=GenericJMSRA&provider=org.superbiz:genericra +myGenericAdapter.AdapterProperty1 = PropertyValue1 +myGenericAdapter.AdapterProperty2 = PropertyValue2 +.... + +This is basically the same as all configuration in TomEE/OpenEJB, but +with the addition that you must specify the `provider` attribute so the +server knows where to look for the `service-jar.xml` file that defines +the resource and all its defaults. + +In this example: + +* the file is `META-INF/org.superbiz/service-jar.xml` +* so the `provider` attribute is `org.superbiz` + +You can use whatever prefix you like for the `provider` id, though for +obvious reasons we'd advise not using `org.apache.openejb` or +`org.apache.tomee` in the prefix. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/changing-jms-implementations.md ---------------------------------------------------------------------- diff --git a/docs/changing-jms-implementations.md b/docs/changing-jms-implementations.md deleted file mode 100644 index ab95410..0000000 --- a/docs/changing-jms-implementations.md +++ /dev/null @@ -1,136 +0,0 @@ -index-group=Configuration -type=page -status=published -title=Changing JMS Implementations -~~~~~~ -Notice: Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - . - http://www.apache.org/licenses/LICENSE-2.0 - . - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - -ActiveMQ is the default JMS provider in Apache TomEE and OpenEJB. - -Changing JMS implementation is as simple as using that implementation's Java EE Connector. The connector which will be a `.rar` file should be bundled with the application in a `.ear` -file. All JMS usage in that `.ear` will favor the JMS ConnectionFactory and Topic and Queue implementations -that are configured in the `.rar` file rather than ActiveMQ. - -If the JMS implementation does not have a `.rar` file, there are still some options for wiring in an alternate implementation. - -# Generic JMS Resource Adapter - -If the JMS implementation does not have a Resource Archive (`.rar` file) that defines a compliant Resource Adapter, the [Generic Resource Adapter for JMS](http://genericjmsra.java.net/) should work fine. - -To use this Adapter in TomEE or OpenEJB you'll need to create a `service-jar.xml` file and include that in a jar file and add it to the `<tomee.home>/lib/` directory. -Then you can declare `ConnectionFactory`, `Topic`, and `Queue` and more via the `tomee.xml` file. - -The one below should be considered boiler plate. Updating it to contain some useful default values for your JMS implementation would be good. These values can be overridden in the `tomee.xml` or `openejb.xml` - -Let's say that the following file lives in the jar at `META-INF/org.superbiz/service-jar.xml` - - <?xml version="1.0" encoding="UTF-8"?> - <ServiceJar> - <ServiceProvider - id="genericra" - service="Resource" - types="GenericJMSRA" - class-name="com.sun.genericra.GenericJMSRA"> - UserName - Password - ProviderIntegrationMode - ConnectionFactoryClassName - QueueConnectionFactoryClassName - TopicConnectionFactoryClassName - XAConnectionFactoryClassName - XAQueueConnectionFactoryClassName - XATopicConnectionFactoryClassName - UnifiedDestinationClassName - TopicClassName - QueueClassName - SupportsXA - ConnectionFactoryProperties - JndiProperties - CommonSetterMethodName - RMPolicy - LogLevel - DeliveryType - UseFirstXAForRedelivery - </ServiceProvider> - - <ServiceProvider - id="ConnectionFactory" - service="Resource" - types="javax.jms.ConnectionFactory, javax.jms.QueueConnectionFactory, javax.jms.TopicConnectionFactory, QueueConnectionFactory, TopicConnectionFactory" - class-name="com.sun.genericra.outbound.ManagedJMSConnectionFactory"> - ConnectionFactoryJndiName - ClientId - ConnectionValidationEnabled - ResourceAdapter - </ServiceProvider> - - <ServiceProvider - id="Queue" - service="Resource" - types="javax.jms.Queue, Queue" - class-name="com.sun.genericra.outbound.QueueProxy"> - DestinationJndiName - ResourceAdapter - UserName - Password - JndiProperties - QueueClassName - </ServiceProvider> - - <ServiceProvider - id="Topic" - service="Resource" - types="javax.jms.Topic, Topic" - class-name="com.sun.genericra.outbound.TopicProxy"> - DestinationJndiName - ResourceAdapter - UserName - Password - JndiProperties - TopicClassName - </ServiceProvider> - </ServiceJar> - -It is strongly recommended to not leave the values in the service-jar.xml file blank as shown above. It is -possible to setup several sets of defaults in a `service-jar.xml` or via several `service-jar.xml` files. - -Once this file is packed in a jar and added to the `<tomee.home>/lib` or `<openejb.home>/lib` directory, you can -then declare and configure "instances" of these things in your `tomee.xml` or `openejb.xml` config file as follows: - - <Resource id="My Generic Adapter" type="GenericJMSRA" provider="org.superbiz:genericra"> - AdapterProperty1 PropertyValue1 - AdapterProperty2 PropertyValue2 - ... - </Resource> - -Or in properties like so: - - myGenericAdapter = new://Resource?type=GenericJMSRA&provider=org.superbiz:genericra - myGenericAdapter.AdapterProperty1 = PropertyValue1 - myGenericAdapter.AdapterProperty2 = PropertyValue2 - -This is basically the same as all configuration in TomEE/OpenEJB, but with the addition that you must -specify the `provider` attribute so the server knows where to look for the `service-jar.xml` file that -defines the resource and all its defaults. - -In this example: - - - the file is `META-INF/org.superbiz/service-jar.xml` - - so the `provider` attribute is `org.superbiz` - -You can use whatever prefix you like for the `provider` id, though for obvious reasons we'd advise not using `org.apache.openejb` or `org.apache.tomee` in the prefix. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/client-server-transports.adoc ---------------------------------------------------------------------- diff --git a/docs/client-server-transports.adoc b/docs/client-server-transports.adoc new file mode 100644 index 0000000..6106a43 --- /dev/null +++ b/docs/client-server-transports.adoc @@ -0,0 +1,39 @@ +# Client-Server Transports +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + +# Client/Server transports + +jar + +transport description + +openejb-ejbd-3.0.jar + +provides the 'ejbd' protocol. A binary protocol traveling over a socket + +openejb-http-3.0.jar + +supports the ejbd protocol over http + +openejb-derbynet-3.0.jar + +allows for derby to accessed via it's network driver + +openejb-hsql-3.0.jar + +allows for hsqldb to be accessed via it's network driver + +openejb-cxf-3.0.jar + +turns on webservice ability, soap/http, via cxf + +openejb-activemq-3.0.jar + +supports remote jms clients via activemq + +openejb-telnet-3.0.jar + +allows for connecting to the server via telnet for monitoring http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/client-server-transports.md ---------------------------------------------------------------------- diff --git a/docs/client-server-transports.md b/docs/client-server-transports.md deleted file mode 100644 index d77c048..0000000 --- a/docs/client-server-transports.md +++ /dev/null @@ -1,22 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=Client-Server Transports -~~~~~~ -<a name="Client-ServerTransports-Client/Servertransports"></a> -# Client/Server transports - -<table class="mdtable"> -<tr><th> jar </th><th> transport description </th></tr> -<tr><td> openejb-ejbd-3.0.jar </td><td> provides the 'ejbd' protocol. A binary protocol -traveling over a socket </td></tr> -<tr><td> openejb-http-3.0.jar </td><td> supports the ejbd protocol over http </td></tr> -<tr><td> openejb-derbynet-3.0.jar </td><td> allows for derby to accessed via it's network -driver </td></tr> -<tr><td> openejb-hsql-3.0.jar </td><td> allows for hsqldb to be accessed via it's network -driver </td></tr> -<tr><td> openejb-cxf-3.0.jar </td><td> turns on webservice ability, soap/http, via cxf </td></tr> -<tr><td> openejb-activemq-3.0.jar </td><td> supports remote jms clients via activemq </td></tr> -<tr><td> openejb-telnet-3.0.jar </td><td> allows for connecting to the server via telnet -for monitoring </td></tr> -</table> http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/clients.adoc ---------------------------------------------------------------------- diff --git a/docs/clients.adoc b/docs/clients.adoc new file mode 100644 index 0000000..48571ce --- /dev/null +++ b/docs/clients.adoc @@ -0,0 +1,95 @@ +# Clients +:index-group: Configuration +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + + +=== Local Client (embedded container) + +.... +Properties p = new Properties(); +p.put("java.naming.factory.initial", "org.apache.openejb.client.LocalInitialContextFactory"); + +InitialContext ctx = new InitialContext(p); + +MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote"); +.... + +=== Local Client (non-default realm name) + +=== Login configuration file (conf/login.config) + +.... +PropertiesLogin { + org.apache.openejb.core.security.jaas.PropertiesLoginModule required + Debug=true + UsersFile="users.properties" + GroupsFile="groups.properties"; +}; +MyApp { + org.apache.openejb.core.security.jaas.SQLLoginModule required + dataSourceName="MyDataSource" + userSelect="SELECT username, password FROM users WHERE username=?" + groupSelect="SELECT username, grp FROM users WHERE username=?"; +}; +.... + +=== Code + +.... +Properties p = new Properties(); +p.put("java.naming.factory.initial", "org.apache.openejb.client.LocalInitialContextFactory"); +p.put("openejb.authentication.realmName", "MyApp"); + +InitialContext ctx = new InitialContext(p); + +MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote"); +.... + +=== Remote Client (openejb standalone) + +.... +Properties p = new Properties(); +p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory"); +p.put("java.naming.provider.url", "ejbd://localhost:4201"); +// user and pass optional +p.put("java.naming.security.principal", "myuser"); +p.put("java.naming.security.credentials", "mypass"); + +InitialContext ctx = new InitialContext(p); + +MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote"); +.... + +=== Remote Client with HTTP (openejb standalone) + +.... +Properties p = new Properties(); +p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory"); +p.put("java.naming.provider.url", "http://localhost:4204/ejb"); +// user and pass optional +p.put("java.naming.security.principal", "myuser"); +p.put("java.naming.security.credentials", "mypass"); + +InitialContext ctx = new InitialContext(p); + +MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote"); +.... + +=== Remote Client with HTTP (in TomEE) + +.... +Properties p = new Properties(); +p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory"); +p.put("java.naming.provider.url", "http://127.0.0.1:8080/tomee/ejb"); +// user and pass optional +p.put("java.naming.security.principal", "myuser"); +p.put("java.naming.security.credentials", "mypass"); + +InitialContext ctx = new InitialContext(p); + +MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote"); +.... + +=== Remote Client using @EJB Injection see here: ejb-refs http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/clients.md ---------------------------------------------------------------------- diff --git a/docs/clients.md b/docs/clients.md deleted file mode 100644 index 19acf6a..0000000 --- a/docs/clients.md +++ /dev/null @@ -1,104 +0,0 @@ -index-group=Configuration -type=page -status=published -title=Clients -~~~~~~ - -<a name="Clients-LocalClient(embeddedcontainer)"></a> -### Local Client (embedded container) - - - Properties p = new Properties(); - p.put("java.naming.factory.initial", "org.apache.openejb.client.LocalInitialContextFactory"); - - InitialContext ctx = new InitialContext(p); - - MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote"); - - -<a name="Clients-LocalClient(non-defaultrealmname)"></a> -### Local Client (non-default realm name) - -<a name="Clients-Loginconfigurationfile(conf/login.config)"></a> -### Login configuration file (conf/login.config) - - - PropertiesLogin { - org.apache.openejb.core.security.jaas.PropertiesLoginModule required - Debug=true - UsersFile="users.properties" - GroupsFile="groups.properties"; - }; - MyApp { - org.apache.openejb.core.security.jaas.SQLLoginModule required - dataSourceName="MyDataSource" - userSelect="SELECT username, password FROM users WHERE username=?" - groupSelect="SELECT username, grp FROM users WHERE username=?"; - }; - - -<a name="Clients-Programcode"></a> -### Code - - - Properties p = new Properties(); - p.put("java.naming.factory.initial", "org.apache.openejb.client.LocalInitialContextFactory"); - p.put("openejb.authentication.realmName", "MyApp"); - - InitialContext ctx = new InitialContext(p); - - MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote"); - - -<a name="Clients-RemoteClient(openejbstandalone)"></a> -### Remote Client (openejb standalone) - - - Properties p = new Properties(); - p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory"); - p.put("java.naming.provider.url", "ejbd://localhost:4201"); - // user and pass optional - p.put("java.naming.security.principal", "myuser"); - p.put("java.naming.security.credentials", "mypass"); - - InitialContext ctx = new InitialContext(p); - - MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote"); - - -<a name="Clients-RemoteClientwithHTTP(openejbstandalone)"></a> -### Remote Client with HTTP (openejb standalone) - - - Properties p = new Properties(); - p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory"); - p.put("java.naming.provider.url", "http://localhost:4204/ejb"); - // user and pass optional - p.put("java.naming.security.principal", "myuser"); - p.put("java.naming.security.credentials", "mypass"); - - InitialContext ctx = new InitialContext(p); - - MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote"); - - - -<a name="Clients-RemoteClientwithHTTP(intomcat)"></a> -### Remote Client with HTTP (in TomEE) - - - Properties p = new Properties(); - p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory"); - p.put("java.naming.provider.url", "http://127.0.0.1:8080/tomee/ejb"); - // user and pass optional - p.put("java.naming.security.principal", "myuser"); - p.put("java.naming.security.credentials", "mypass"); - - InitialContext ctx = new InitialContext(p); - - MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote"); - -<a name="RemoteClientUsingEjbInjection)"></a> -### Remote Client using @EJB Injection -see here: -<a href="http://tomee.apache.org/ejb-refs.html">ejb-refs</a> http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/cmpentitycontainer-config.adoc ---------------------------------------------------------------------- diff --git a/docs/cmpentitycontainer-config.adoc b/docs/cmpentitycontainer-config.adoc new file mode 100644 index 0000000..c3aa59a --- /dev/null +++ b/docs/cmpentitycontainer-config.adoc @@ -0,0 +1,51 @@ +# CmpEntityContainer Configuration +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + + +A CmpEntityContainer can be declared via xml in the +`<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file +using a declaration like the following. All properties in the element +body are optional. + +.... +<Container id="myCmpEntityContainer" type="CMP_ENTITY"> + cmpEngineFactory = org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory +</Container> +.... + +Alternatively, a CmpEntityContainer can be declared via properties in +the `<tomee-home>/conf/system.properties` file or via Java +VirtualMachine `-D` properties. The properties can also be used when +embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or +`InitialContext` + +.... +myCmpEntityContainer = new://Container?type=CMP_ENTITY +myCmpEntityContainer.cmpEngineFactory = org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory +.... + +Properties and xml can be mixed. Properties will override the xml +allowing for easy configuration change without the need for $\{} style +variable substitution. Properties are not case sensitive. If a property +is specified that is not supported by the declared CmpEntityContainer a +warning will be logged. If a CmpEntityContainer is needed by the +application and one is not declared, TomEE will create one dynamically +using default settings. Multiple CmpEntityContainer declarations are +allowed. # Supported Properties + +Property + +Type + +Default + +Description + +cmpEngineFactory + +String + +org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/cmpentitycontainer-config.md ---------------------------------------------------------------------- diff --git a/docs/cmpentitycontainer-config.md b/docs/cmpentitycontainer-config.md deleted file mode 100644 index 5a91989..0000000 --- a/docs/cmpentitycontainer-config.md +++ /dev/null @@ -1,36 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=CmpEntityContainer Configuration -~~~~~~ - - -A CmpEntityContainer can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following. All properties in the element body are optional. - - <Container id="myCmpEntityContainer" type="CMP_ENTITY"> - cmpEngineFactory = org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory - </Container> - -Alternatively, a CmpEntityContainer can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties. The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext` - - myCmpEntityContainer = new://Container?type=CMP_ENTITY - myCmpEntityContainer.cmpEngineFactory = org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory - -Properties and xml can be mixed. Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution. Properties are not case sensitive. If a property is specified that is not supported by the declared CmpEntityContainer a warning will be logged. If a CmpEntityContainer is needed by the application and one is not declared, TomEE will create one dynamically using default settings. Multiple CmpEntityContainer declarations are allowed. -# Supported Properties -<table class="mdtable"> -<tr> -<th>Property</th> -<th>Type</th> -<th>Default</th> -<th>Description</th> -</tr> -<tr> - <td>cmpEngineFactory</td> - <td>String</td> - <td>org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory</td> - <td> - -</td> -</tr> -</table> http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/collapsed-ear.adoc ---------------------------------------------------------------------- diff --git a/docs/collapsed-ear.adoc b/docs/collapsed-ear.adoc new file mode 100644 index 0000000..8e003ad --- /dev/null +++ b/docs/collapsed-ear.adoc @@ -0,0 +1,49 @@ +# Collapsed EAR +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + +# One archive + +The basic idea of this approach is that your Servlets and EJBs are +together in your WAR file as one app. + +* No classloader boundries between Servlets and EJBs +* EJBs and Servlets can share all third-party libraries (like Spring!) - +no EAR required. +* Can put the web.xml and ejb-jar.xml in the same archive (the WAR +file). +* EJBs can see Servlet classes and vice versa. + +# Not quite J2EE (it is truly Java EE6) + +This is very different than J2EE or Java EE 5 as there aren't several +levels of separation and classloader hierarchy. This is going to take +some getting used to and it should be understood that this style of +packaging isn't J2EE compliant. Who would care tough as it is a feature +of Java EE 6 we would've been waiting for so long. + +J2EE classloading rules: + +* You cannot ever have EJBs and servlets in the same classloader. +* Three classloader minimum; a classloader for the ear, one for each +ejb-jar, and one for each WAR file. +* Servlets can see EJBs, but EJBs cannot see servlets. + +To pull that off, J2EE has to kill you on packaging: * You cannot have +EJB classes and Servlet classes in the same archive. * You need at least +three archives to combine servlets and ejbs; 1 EAR containing 1 EJB jar +and 1 servlet WAR. * Shared libraries must go in the EAR and be included +in a specially formatted 'Class-Path' entry in the EAR's MANIFEST file. + +Critically speaking, forcing more than one classloader on an application +is where J2EE "jumps the shark" for a large majority of people's needs. + +# Example with Tomcat + +If you want to try to work with Servlets/JSP and OpenEJB using Tomcat, +see the openejbx30:tomcat.html[setup page] and the +"/webapps/ejb-examples" section of the +link:downloads.html[openejb-examples.zip] available on the +http://tomee.apache.org/downloads.html[download page]. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/collapsed-ear.md ---------------------------------------------------------------------- diff --git a/docs/collapsed-ear.md b/docs/collapsed-ear.md deleted file mode 100644 index a481a4c..0000000 --- a/docs/collapsed-ear.md +++ /dev/null @@ -1,46 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=Collapsed EAR -~~~~~~ -<a name="CollapsedEAR-Onearchive"></a> -# One archive - -The basic idea of this approach is that your Servlets and EJBs are together -in your WAR file as one app. - -* No classloader boundries between Servlets and EJBs -* EJBs and Servlets can share all third-party libraries (like Spring\!) - no EAR required. -* Can put the web.xml and ejb-jar.xml in the same archive (the WAR file). -* EJBs can see Servlet classes and vice versa. - -<a name="CollapsedEAR-NotquiteJ2EE(itistrulyJava EE6)"></a> -# Not quite J2EE (it is truly Java EE6) - -This is very different than J2EE or Java EE 5 as there aren't several -levels of separation and classloader hierarchy. This is going to take some -getting used to and it should be understood that this style of packaging -isn't J2EE compliant. Who would care tough as it is a feature of Java EE 6 -we would've been waiting for so long. - - J2EE classloading rules: - -* You cannot ever have EJBs and servlets in the same classloader. -* Three classloader minimum; a classloader for the ear, one for each ejb-jar, and one for each WAR file. -* Servlets can see EJBs, but EJBs cannot see servlets. - - To pull that off, J2EE has to kill you on packaging: -* You cannot have EJB classes and Servlet classes in the same archive. -* You need at least three archives to combine servlets and ejbs; 1 EAR containing 1 EJB jar and 1 servlet WAR. -* Shared libraries must go in the EAR and be included in a specially formatted 'Class-Path' entry in the EAR's MANIFEST file. - - Critically speaking, forcing more than one classloader on an application -is where J2EE "jumps the shark" for a large majority of people's needs. - -<a name="CollapsedEAR-ExamplewithTomcat"></a> -# Example with Tomcat - -If you want to try to work with Servlets/JSP and OpenEJB using Tomcat, see -the [setup page](openejbx30:tomcat.html) - and the "/webapps/ejb-examples" section of the [openejb-examples.zip](downloads.html) - available on the [download page](http://tomee.apache.org/downloads.html). http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/common-datasource-configurations.adoc ---------------------------------------------------------------------- diff --git a/docs/common-datasource-configurations.adoc b/docs/common-datasource-configurations.adoc new file mode 100644 index 0000000..872b9cd --- /dev/null +++ b/docs/common-datasource-configurations.adoc @@ -0,0 +1,116 @@ +# Common DataSource Configurations +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + + +See the link:datasource-config.html[DataSource Configuration] for +details on all configuration options for DataSources. + +== HSQLDB + +The drivers are included with OpenEJB 3.0 and HSQLDB is the default +database. + +.... +<Resource id="HSQLDB Database" type="DataSource"> + JdbcDriver org.hsqldb.jdbcDriver + JdbcUrl jdbc:hsqldb:file:hsqldb + UserName sa + Password +</Resource> +.... + +== Derby (Embedded) + +.... +<Resource id="Derby Database" type="DataSource"> + #Embedded Derby example + + JdbcDriver org.apache.derby.jdbc.EmbeddedDriver + JdbcUrl jdbc:derby:derbyDB;create=true + UserName admin + Password pass +</Resource> +.... + +== MySQL + +.... +<Resource id="MySQL Database" type="DataSource"> + # MySQL example + # + # This connector will not work until you download the driver at: + # http://www.mysql.com/downloads/api-jdbc-stable.html + + JdbcDriver com.mysql.jdbc.Driver + JdbcUrl jdbc:mysql://localhost/test + UserName test +</Resource> +.... + +== Oracle + +.... +<Resource id="Oracle Database" type="DataSource"> + # Oracle example + # + # This connector will not work until you download the driver at: + # http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html + JdbcDriver oracle.jdbc.OracleDriver + JdbcUrl jdbc:oracle:thin:@localhost:1521:orcl + UserName scott + Password tiger +</Resource> +.... + +== OracleXA + +.... +<Resource id="OracleXA Database" type="DataSource"> + # OracleXA example + # + # This connector will not work until you download the driver at: + # http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html + JdbcDriver oracle.jdbc.xa.client.OracleXADataSource + JdbcUrl jdbc:oracle:thin:@localhost:1521:orcl + UserName scott + Password tiger +</Resource> +.... + +== PosgreSQL + +.... +<Resource id="PostgreSQL Database" type="DataSource"> + # PostgreSQL example + # + # This connector will not work until you download the driver at: + # http://jdbc.postgresql.org/download.html + JdbcDriver org.postgresql.Driver + JdbcUrl jdbc:postgresql://localhost/test + UserName postgres + Password pass +</Resource> +.... + +== InstantDB + +.... +<Resource id="InstantDB Database" type="DataSource"> + # InstantDB example + # + JdbcDriver org.enhydra.instantdb.jdbc.idbDriver + JdbcUrl jdbc:idb:conf/instantdb.properties + UserName Admin + Password pass +</Resource> +.... + +Internally, from TomEE 1.5.0, JDBC pools are managed via Tomcat-pool. +You can still switch back to Apache Commons DBCP by adding the following +property: DataSourceCreator dbcp. To get the full list of available +configuration properties, have a look to +http://commons.apache.org/dbcp/configuration.html[Apache Commons DBCP +configuration]. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/common-datasource-configurations.md ---------------------------------------------------------------------- diff --git a/docs/common-datasource-configurations.md b/docs/common-datasource-configurations.md deleted file mode 100644 index 64aa60e..0000000 --- a/docs/common-datasource-configurations.md +++ /dev/null @@ -1,115 +0,0 @@ -index-group=Configuration -type=page -status=published -title=Common DataSource Configurations -~~~~~~ - -See the [DataSource Configuration](datasource-config.html) for details on all configuration options for DataSources. - -<a name="CommonDataSourceConfigurations-HSQLDB"></a> -## HSQLDB - -The drivers are included with OpenEJB 3.0 and HSQLDB is the default -database. - - <Resource id="HSQLDB Database" type="DataSource"> - JdbcDriver org.hsqldb.jdbcDriver - JdbcUrl jdbc:hsqldb:file:hsqldb - UserName sa - Password - </Resource> - - -<a name="CommonDataSourceConfigurations-Derby(Embedded)"></a> -## Derby (Embedded) - - - <Resource id="Derby Database" type="DataSource"> - #Embedded Derby example - - JdbcDriver org.apache.derby.jdbc.EmbeddedDriver - JdbcUrl jdbc:derby:derbyDB;create=true - UserName admin - Password pass - </Resource> - - -<a name="CommonDataSourceConfigurations-MySQL"></a> -## MySQL - - - <Resource id="MySQL Database" type="DataSource"> - # MySQL example - # - # This connector will not work until you download the driver at: - # http://www.mysql.com/downloads/api-jdbc-stable.html - - JdbcDriver com.mysql.jdbc.Driver - JdbcUrl jdbc:mysql://localhost/test - UserName test - </Resource> - - -<a name="CommonDataSourceConfigurations-Oracle"></a> -## Oracle - - - <Resource id="Oracle Database" type="DataSource"> - # Oracle example - # - # This connector will not work until you download the driver at: - # http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html - JdbcDriver oracle.jdbc.OracleDriver - JdbcUrl jdbc:oracle:thin:@localhost:1521:orcl - UserName scott - Password tiger - </Resource> - -<a name="CommonDataSourceConfigurations-OracleXA"></a> -## OracleXA - - - <Resource id="OracleXA Database" type="DataSource"> - # OracleXA example - # - # This connector will not work until you download the driver at: - # http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html - JdbcDriver oracle.jdbc.xa.client.OracleXADataSource - JdbcUrl jdbc:oracle:thin:@localhost:1521:orcl - UserName scott - Password tiger - </Resource> - -<a name="CommonDataSourceConfigurations-PosgreSQL"></a> -## PosgreSQL - - - <Resource id="PostgreSQL Database" type="DataSource"> - # PostgreSQL example - # - # This connector will not work until you download the driver at: - # http://jdbc.postgresql.org/download.html - JdbcDriver org.postgresql.Driver - JdbcUrl jdbc:postgresql://localhost/test - UserName postgres - Password pass - </Resource> - - -<a name="CommonDataSourceConfigurations-InstantDB"></a> -## InstantDB - - - <Resource id="InstantDB Database" type="DataSource"> - # InstantDB example - # - JdbcDriver org.enhydra.instantdb.jdbc.idbDriver - JdbcUrl jdbc:idb:conf/instantdb.properties - UserName Admin - Password pass - </Resource> - - - -Internally, from TomEE 1.5.0, JDBC pools are managed via Tomcat-pool. You can still switch back to Apache Commons DBCP by adding the following property: DataSourceCreator dbcp. To -get the full list of available configuration properties, have a look to [Apache Commons DBCP configuration](http://commons.apache.org/dbcp/configuration.html). http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/common-errors.adoc ---------------------------------------------------------------------- diff --git a/docs/common-errors.adoc b/docs/common-errors.adoc new file mode 100644 index 0000000..8eda5b6 --- /dev/null +++ b/docs/common-errors.adoc @@ -0,0 +1,31 @@ +# Common Errors +:index-group: Unrevised +:jbake-date: 2018-12-05 +:jbake-type: page +:jbake-status: published + + +<a name="CommonErrors-Cannotfindcontainer"FOO"forbean"BAR""> # Cannot +find container "FOO" for bean "BAR" + +When a bean gets deployed in OpenEJB, it gets associated with a +particular container. Subsequently, that container may not be configured +in that instance of the server. When the server loads the Jar with the +deployed beans, it places beans in the containers that the beans were +configured with. Here, the bean BAR wants to go into the container FOO, +which is not currently configured. + +This message is displayed when the server is starting up. <a +name="CommonErrors-Cannotfindbean"FOO"referencedbybean"BAR"."> # Cannot +find bean "FOO" referenced by bean "BAR". + +When a bean gets deployed in OpenEJB, it may contain references to other +beans. Subsequently, those beans may not be configured in that instance +of the server. When the server loads the Jar with the deployed beans, it +stores those references to those beans. Here, the bean BAR references +FOO, which is not currently configured in the JNDI namespace. + +This message is displayed when the server is starting up. + +This message is usally the result of a deployment descriptor that has +been created by hand. http://git-wip-us.apache.org/repos/asf/tomee/blob/d380ec18/docs/common-errors.md ---------------------------------------------------------------------- diff --git a/docs/common-errors.md b/docs/common-errors.md deleted file mode 100644 index dbf992b..0000000 --- a/docs/common-errors.md +++ /dev/null @@ -1,30 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=Common Errors -~~~~~~ - -<a name="CommonErrors-Cannotfindcontainer"FOO"forbean"BAR""></a> -# Cannot find container "FOO" for bean "BAR" - -When a bean gets deployed in OpenEJB, it gets associated with a particular -container. Subsequently, that container may not be configured in that -instance of the server. When the server loads the Jar with the deployed -beans, it places beans in the containers that the beans were configured -with. Here, the bean BAR wants to go into the container FOO, which is not -currently configured. - -This message is displayed when the server is starting up. -<a name="CommonErrors-Cannotfindbean"FOO"referencedbybean"BAR"."></a> -# Cannot find bean "FOO" referenced by bean "BAR". - -When a bean gets deployed in OpenEJB, it may contain references to other -beans. Subsequently, those beans may not be configured in that instance of -the server. When the server loads the Jar with the deployed beans, it -stores those references to those beans. Here, the bean BAR references FOO, -which is not currently configured in the JNDI namespace. - -This message is displayed when the server is starting up. - -This message is usally the result of a deployment descriptor that has been -created by hand.
