[afvg.ltafvg] ➤ mvn clean install wildfly:deploy
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for
login-provider-focusoc:login-provider-focusoc:jar:0.0.1-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for
org.apache.maven.plugins:maven-jar-plugin is missing. @ line 65, column 12
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the
stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such
malformed projects.
[WARNING]
[INFO]
[INFO] -----------< login-provider-focusoc:login-provider-focusoc >------------
[INFO] Building login-provider-focusoc 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ login-provider-focusoc ---
[INFO] Deleting C:\Users\AFVG\eclipse-workspace\login-provider-focusoc\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @
login-provider-focusoc ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build
is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ login-provider-focusoc
---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is
platform dependent!
[INFO] Compiling 4 source files to
C:\Users\AFVG\eclipse-workspace\login-provider-focusoc\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @
login-provider-focusoc ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build
is platform dependent!
[INFO] skip non existing resourceDirectory
C:\Users\AFVG\eclipse-workspace\login-provider-focusoc\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @
login-provider-focusoc ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ login-provider-focusoc ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ login-provider-focusoc ---
[INFO] Building jar:
C:\Users\AFVG\eclipse-workspace\login-provider-focusoc\target\login-provider-focusoc.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ login-provider-focusoc
---
[INFO] Installing
C:\Users\AFVG\eclipse-workspace\login-provider-focusoc\target\login-provider-focusoc.jar
to
C:\Users\AFVG\.m2\repository\login-provider-focusoc\login-provider-focusoc\0.0.1-SNAPSHOT\login-provider-focusoc-0.0.1-SNAPSHOT.jar
[INFO] Installing C:\Users\AFVG\eclipse-workspace\login-provider-focusoc\pom.xml to
C:\Users\AFVG\.m2\repository\login-provider-focusoc\login-provider-focusoc\0.0.1-SNAPSHOT\login-provider-focusoc-0.0.1-SNAPSHOT.pom
[INFO]
[INFO] >>> wildfly-maven-plugin:1.2.2.Final:deploy (default-cli) > package @
login-provider-focusoc >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @
login-provider-focusoc ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build
is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ login-provider-focusoc
---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @
login-provider-focusoc ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build
is platform dependent!
[INFO] skip non existing resourceDirectory
C:\Users\AFVG\eclipse-workspace\login-provider-focusoc\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @
login-provider-focusoc ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ login-provider-focusoc ---
[INFO] No tests to run.
[INFO] Skipping execution of surefire because it has already been run for this
configuration
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ login-provider-focusoc ---
[INFO]
[INFO] <<< wildfly-maven-plugin:1.2.2.Final:deploy (default-cli) < package @
login-provider-focusoc <<<
[INFO]
[INFO]
[INFO] --- wildfly-maven-plugin:1.2.2.Final:deploy (default-cli) @ login-provider-focusoc
---
Oct 02, 2019 12:29:53 PM org.jboss.remoting3.EndpointImpl <clinit>
INFO: JBoss Remoting version 5.0.5.Final
Oct 02, 2019 12:29:53 PM org.xnio.Xnio <clinit>
INFO: XNIO version 3.5.4.Final
Oct 02, 2019 12:29:53 PM org.xnio.nio.NioXnio <clinit>
INFO: XNIO NIO Implementation Version 3.5.4.Final
Oct 02, 2019 12:29:54 PM org.wildfly.security.Version <clinit>
INFO: ELY00001: WildFly Elytron version 1.1.7.Final
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by
org.wildfly.security.manager.GetAccessibleDeclaredFieldAction
(file:/C:/Users/AFVG/.m2/repository/org/wildfly/security/wildfly-elytron/1.1.7.Final/wildfly-elytron-1.1.7.Final.jar)
to field java.security.AccessControlContext.context
WARNING: Please consider reporting this to the maintainers of
org.wildfly.security.manager.GetAccessibleDeclaredFieldAction
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access
operations
WARNING: All illegal access operations will be denied in a future release
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.657 s
[INFO] Finished at: 2019-10-02T12:29:55+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.wildfly.plugins:wildfly-maven-plugin:1.2.2.Final:deploy
(default-cli) on project login-provider-focusoc: Failed to execute goal deploy:
{"WFLYCTL0062: Composite operation failed and was rolled back. Steps that
failed:" => {"Operation step-1" => {"WFLYCTL0080: Failed
services" =>
{"jboss.deployment.unit.\"login-provider-focusoc.jar\".POST_MODULE"
=> "WFLYSRV0153: Failed to process phase POST_MODULE of deployment
\"login-provider-focusoc.jar\"
[ERROR] Caused by: java.lang.NoClassDefFoundError: Failed to link
gcs/fds/focusoc/keycloak/spi/LoginStorageProvider (Module
\"deployment.login-provider-focusoc.jar\" from Service Module Loader):
org/keycloak/storage/user/UserLookupProvider"}}}}
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the
following articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
________________________________
De: Alfonso Vidal García
Enviado: miércoles, 2 de octubre de 2019 10:30:41
Para: keycloak-user(a)lists.jboss.org
Asunto: RV: [keycloak-user] Any examples for custom Identity Providers?
________________________________
De: Alfonso Vidal García
Enviado: miércoles, 2 de octubre de 2019 9:29
Para: stian(a)redhat.com
Asunto: Re: [keycloak-user] Any examples for custom Identity Providers?
Here is the full trace, from the deploy to the error.
17:13:42,586 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0027:
Starting deployment of "login-provider-focusoc.jar" (runtime-name:
"login-provider-focusoc.jar")
17:13:42,644 WARN [org.jboss.modules.define] (MSC service thread 1-8) Failed to define
class gcs.fds.focusoc.keycloak.spi.LoginStorageProvider in Module
"deployment.login-provider-focusoc.jar" from Service Module Loader:
java.lang.NoClassDefFoundError: Failed to link
gcs/fds/focusoc/keycloak/spi/LoginStorageProvider (Module
"deployment.login-provider-focusoc.jar" from Service Module Loader):
org/keycloak/storage/UserStorageProvider
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1095)
at
org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:424)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
at
org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
at
org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
at org.jboss.modules.Module.loadModuleClass(Module.java:731)
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at
org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at
org.jboss.as.ee@17.0.1.Final//org.jboss.as.ee.utils.ClassLoadingUtils.loadClass(ClassLoadingUtils.java:21)
at
org.jboss.as.ee@17.0.1.Final//org.jboss.as.ee.utils.ClassLoadingUtils.loadClass(ClassLoadingUtils.java:14)
at
org.jboss.as.ee@17.0.1.Final//org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:84)
at
org.jboss.as.ee@17.0.1.Final//org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:76)
at
org.jboss.as.server@9.0.2.Final//org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:176)
at
org.jboss.msc@1.4.8.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1737)
at
org.jboss.msc@1.4.8.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1699)
at
org.jboss.msc@1.4.8.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1557)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.base/java.lang.Thread.run(Thread.java:834)
17:13:42,645 WARN [org.jboss.modules.define] (MSC service thread 1-8) Failed to define
class gcs.fds.focusoc.keycloak.spi.LoginStorageProvider in Module
"deployment.login-provider-focusoc.jar" from Service Module Loader:
java.lang.NoClassDefFoundError: Failed to link
gcs/fds/focusoc/keycloak/spi/LoginStorageProvider (Module
"deployment.login-provider-focusoc.jar" from Service Module Loader):
org/keycloak/storage/UserStorageProvider
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1095)
at
org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:424)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
at
org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
at
org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
at org.jboss.modules.Module.loadModuleClass(Module.java:731)
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at
org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
at
org.jboss.as.ejb3@17.0.1.Final//org.jboss.as.ejb3.deployment.processors.BusinessViewAnnotationProcessor.getEjbClass(BusinessViewAnnotationProcessor.java:238)
at
org.jboss.as.ejb3@17.0.1.Final//org.jboss.as.ejb3.deployment.processors.BusinessViewAnnotationProcessor.deploy(BusinessViewAnnotationProcessor.java:89)
at
org.jboss.as.server@9.0.2.Final//org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:176)
at
org.jboss.msc@1.4.8.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1737)
at
org.jboss.msc@1.4.8.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1699)
at
org.jboss.msc@1.4.8.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1557)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.base/java.lang.Thread.run(Thread.java:834)
17:13:42,645 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC000001: Failed
to start service jboss.deployment.unit."login-provider-focusoc.jar".POST_MODULE:
org.jboss.msc.service.StartException in service
jboss.deployment.unit."login-provider-focusoc.jar".POST_MODULE: WFLYSRV0153:
Failed to process phase POST_MODULE of deployment "login-provider-focusoc.jar"
at
org.jboss.as.server@9.0.2.Final//org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:183)
at
org.jboss.msc@1.4.8.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1737)
at
org.jboss.msc@1.4.8.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1699)
at
org.jboss.msc@1.4.8.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1557)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at
org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NoClassDefFoundError: Failed to link
gcs/fds/focusoc/keycloak/spi/LoginStorageProvider (Module
"deployment.login-provider-focusoc.jar" from Service Module Loader):
org/keycloak/storage/UserStorageProvider
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1095)
at
org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:424)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
at
org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
at
org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
at org.jboss.modules.Module.loadModuleClass(Module.java:731)
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at
org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
at
org.jboss.as.ejb3@17.0.1.Final//org.jboss.as.ejb3.deployment.processors.BusinessViewAnnotationProcessor.getEjbClass(BusinessViewAnnotationProcessor.java:238)
at
org.jboss.as.ejb3@17.0.1.Final//org.jboss.as.ejb3.deployment.processors.BusinessViewAnnotationProcessor.deploy(BusinessViewAnnotationProcessor.java:89)
at
org.jboss.as.server@9.0.2.Final//org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:176)
... 8 more
17:13:42,649 ERROR [org.jboss.as.controller.management-operation]
(DeploymentScanner-threads - 2) WFLYCTL0013: Operation
("full-replace-deployment") failed - address: ([]) - failure description:
{"WFLYCTL0080: Failed services" =>
{"jboss.deployment.unit.\"login-provider-focusoc.jar\".POST_MODULE"
=> "WFLYSRV0153: Failed to process phase POST_MODULE of deployment
\"login-provider-focusoc.jar\"
Caused by: java.lang.NoClassDefFoundError: Failed to link
gcs/fds/focusoc/keycloak/spi/LoginStorageProvider (Module
\"deployment.login-provider-focusoc.jar\" from Service Module Loader):
org/keycloak/storage/UserStorageProvider"}}
17:13:42,685 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0016:
Replaced deployment "login-provider-focusoc.jar" with deployment
"login-provider-focusoc.jar"
17:13:42,685 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 2) WFLYCTL0183:
Service status report
WFLYCTL0186: Services which failed to start: service
jboss.deployment.unit."login-provider-focusoc.jar".POST_MODULE: WFLYSRV0153:
Failed to process phase POST_MODULE of deployment "login-provider-focusoc.jar"
17:13:42,687 INFO [org.jboss.as.repository] (DeploymentScanner-threads - 2) WFLYDR0002:
Content removed from location
C:\Users\AFVG\Documents\keycloak-7.0.0\keycloak-7.0.0\standalone\data\content\d9\2a3d711fd6f640bd28b3b8c24b6c76f626a439\content
________________________________
De: Stian Thorgersen <sthorger(a)redhat.com>
Enviado: miércoles, 2 de octubre de 2019 9:25:51
Para: Alfonso Vidal García
Asunto: Re: [keycloak-user] Any examples for custom Identity Providers?
Do you have the full stack trace?
On Wed, 2 Oct 2019, 08:46 Alfonso Vidal García,
<avidal@gmv.com<mailto:avidal@gmv.com>> wrote:
I have the same problem with the Provider and I added the dependecy on xml. So what it is
happening?
________________________________
De:
keycloak-user-bounces@lists.jboss.org<mailto:keycloak-user-bounces@lists.jboss.org>
<keycloak-user-bounces@lists.jboss.org<mailto:keycloak-user-bounces@lists.jboss.org>>
en nombre de Stian Thorgersen
<sthorger@redhat.com<mailto:sthorger@redhat.com>>
Enviado: miércoles, 2 de octubre de 2019 8:18:38
Para: James Mitchell
Cc: keycloak-user
Asunto: Re: [keycloak-user] Any examples for custom Identity Providers?
Did you add a jboss-deployment-structure.xml with a dependency on
server-private-api (or whatever it is called) module?
On Wed, 2 Oct 2019, 05:39 James Mitchell,
<jamesm@suitebox.com<mailto:jamesm@suitebox.com>> wrote:
Are there any examples for customising an Identity Provider?
I want to make an extension to the OIDCIdentityProvider, so that I can
accept non-standard fields for the userinfo response. All part of trying to
get token exchange to work in our system...
I have made a light change to the OIDCIdentityProvider, and also compared
with the various social providers, and I have something that deploys.
But it throws an error at runtime trying to create the class.
This looks liek this when adding the provider in the website
UT005023: Exception handling request to
/auth/admin/realms/sbxtest/identity-provider/providers/xplan:
java.lang.NoClassDefFoundError: Failed to link
com/suitebox/keycloak/broker/xplan/XPLANIdentityProvider (Module
"deployment.sbxkeycloak.jar" from Service Module Loader):
org/keycloak/broker/oidc/AbstractOAuth2IdentityProvider
And looks like this when trying to perform token-exchange with the provider
Uncaught server error: java.lang.NoClassDefFoundError: Failed to link
com/suitebox/keycloak/broker/xplan/XPLANIdentityProvider (Module
"deployment.sbxkeycloak.jar" from Service Module Loader):
org/keycloak/broker/oidc/AbstractOAuth2IdentityProvider
----
*James Mitchell*
Developer
e: jamesm@suitebox.com<mailto:jamesm@suitebox.com>
w:
www.suitebox.com<https://urldefense.proofpoint.com/v2/url?u=http-3A__w...
*SuiteBox |* Level 4, 8 Mahuhu Crescent, Auckland 1010, NZ
_______________________________________________
keycloak-user mailing list
keycloak-user@lists.jboss.org<mailto:keycloak-user@lists.jboss.org>
https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.jboss.org_mail...
_______________________________________________
keycloak-user mailing list
keycloak-user@lists.jboss.org<mailto:keycloak-user@lists.jboss.org>
https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.jboss.org_mail...
P Please consider the environment before printing this e-mail.
P Please consider the environment before printing this e-mail.