View Javadoc
1   /*
2    * JBoss, Home of Professional Open Source
3    * Copyright 2014, Red Hat, Inc. and/or its affiliates, and individual
4    * contributors by the @authors tag. See the copyright.txt in the
5    * distribution for a full listing of individual contributors.
6    *
7    * Licensed under the Apache License, Version 2.0 (the "License");
8    * you may not use this file except in compliance with the License.
9    * You may obtain a copy of the License at
10   * http://www.apache.org/licenses/LICENSE-2.0
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.jboss.as.quickstarts.ejb.multi.server.app;
18  
19  import java.security.Principal;
20  
21  import javax.annotation.Resource;
22  import javax.annotation.security.RolesAllowed;
23  import javax.ejb.SessionContext;
24  import javax.ejb.Stateless;
25  import org.jboss.as.quickstarts.ejb.multi.server.app.AppTwo;
26  import org.jboss.ejb3.annotation.SecurityDomain;
27  import org.jboss.logging.Logger;
28  
29  /**
30   * Simple bean with methods to get the node name of the server and log messages. One method is annotated with a security role.
31   * The security-domain is declared by the JBoss specific annotation SecurityDomain.
32   * 
33   * @author <a href="mailto:wfink@redhat.com">Wolf-Dieter Fink</a>
34   */
35  @SecurityDomain(value = "other")
36  public @Stateless class AppTwoBean implements AppTwo {
37      private static final Logger LOGGER = Logger.getLogger(AppTwoBean.class);
38  
39      @Resource
40      SessionContext context;
41  
42      @Override
43      public String getJBossNodeName() {
44          return System.getProperty("jboss.node.name");
45      }
46  
47      @Override
48      public String invoke(String text) {
49          Principal caller = context.getCallerPrincipal();
50          LOGGER.info("[" + caller.getName() + "] " + text);
51          return "app2[" + caller.getName() + "]@" + getJBossNodeName();
52      }
53  
54      @Override
55      @RolesAllowed({ "AppTwo", "Intern" })
56      public String invokeSecured(String text) {
57          Principal caller = context.getCallerPrincipal();
58          LOGGER.info("Secured invocation [" + caller.getName() + "] " + text);
59          LOGGER.info("Is in Role AppTwo=" + context.isCallerInRole("AppTwo") + " Intern=" + context.isCallerInRole("Intern"));
60          return "app2[" + caller.getName() + "]@" + getJBossNodeName();
61      }
62  
63  }