⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch13s78.html

📁 详细介绍了jboss3.0的配置等
💻 HTML
📖 第 1 页 / 共 5 页
字号:
    public String echo(String arg)
    {
        System.out.println("StatefulSessionBean.echo, arg="+arg);
        Principal p = sessionContext.getCallerPrincipal();
        System.out.println("StatefulSessionBean.echo, callerPrincipal="+p);
        return arg;
    }
    public void noop() 
    {
        System.out.println("StatefulSessionBean.noop");
        Principal p = sessionContext.getCallerPrincipal();
        System.out.println("StatefulSessionBean.noop, callerPrincipal="+p);
    }
}</pre></div><div class="figure"><p><a name="ejb-jar.xml"></a><b>Figure 13.16. The ejb-jar Deployment Descriptor</b></p><pre class="programlisting">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN"
    "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd"&gt;

&lt;ejb-jar&gt;
    &lt;display-name&gt;SecurityTests&lt;/display-name&gt;
    &lt;enterprise-beans&gt;
        &lt;session&gt;
            &lt;description&gt;A trival stateless session echo bean&lt;/description&gt;
            &lt;ejb-name&gt;StatelessSession&lt;/ejb-name&gt;
            &lt;home&gt;SessionHome&lt;/home&gt;
            &lt;remote&gt;Session&lt;/remote&gt;
            &lt;ejb-class&gt;StatelessSessionBean&lt;/ejb-class&gt;
            &lt;session-type&gt;Stateless&lt;/session-type&gt;
            &lt;transaction-type&gt;Container&lt;/transaction-type&gt;
        &lt;/session&gt;

        &lt;session&gt;
            &lt;description&gt;A trival stateful session echo bean&lt;/description&gt;
            &lt;ejb-name&gt;StatefulSession&lt;/ejb-name&gt;
            &lt;home&gt;SessionHome&lt;/home&gt;
            &lt;remote&gt;Session&lt;/remote&gt;
            &lt;ejb-class&gt;StatefulSessionBean&lt;/ejb-class&gt;
            &lt;session-type&gt;Stateful&lt;/session-type&gt;
            &lt;transaction-type&gt;Container&lt;/transaction-type&gt;
        &lt;/session&gt;
    &lt;/enterprise-beans&gt;

    &lt;assembly-descriptor&gt;
        &lt;security-role&gt;
            &lt;role-name&gt;Echo&lt;/role-name&gt;
        &lt;/security-role&gt;

        &lt;method-permission&gt;
            &lt;role-name&gt;Echo&lt;/role-name&gt;
            &lt;method&gt;
                &lt;ejb-name&gt;StatelessSession&lt;/ejb-name&gt;
                &lt;method-name&gt;*&lt;/method-name&gt;
            &lt;/method&gt;
            &lt;method&gt;
                &lt;ejb-name&gt;StatefulSession&lt;/ejb-name&gt;
                &lt;method-name&gt;*&lt;/method-name&gt;
            &lt;/method&gt;
        &lt;/method-permission&gt;

        &lt;method-permission&gt;
            &lt;role-name&gt;Coder&lt;/role-name&gt;
            &lt;method&gt;
                &lt;ejb-name&gt;StatefulSession&lt;/ejb-name&gt;
                &lt;method-name&gt;create&lt;/method-name&gt;
            &lt;/method&gt;
            &lt;method&gt;
                &lt;ejb-name&gt;StatefulSession&lt;/ejb-name&gt;
                &lt;method-name&gt;remove&lt;/method-name&gt;
            &lt;/method&gt;
            &lt;method&gt;
                &lt;ejb-name&gt;StatefulSession&lt;/ejb-name&gt;
                &lt;method-name&gt;noop&lt;/method-name&gt;
            &lt;/method&gt;
        &lt;/method-permission&gt;
    &lt;/assembly-descriptor&gt;
&lt;/ejb-jar&gt;
</pre></div><div class="figure"><p><a name="jboss.xml"></a><b>Figure 13.17. The jboss.xml Deployment Descriptor</b></p><pre class="programlisting">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;jboss&gt;
    &lt;!-- All bean containers use this security manager by default --&gt;
    &lt;security-domain&gt;java:/jaas/example1&lt;/security-domain&gt;

    &lt;enterprise-beans&gt;
        &lt;session&gt;
            &lt;ejb-name&gt;StatelessSession&lt;/ejb-name&gt;
            &lt;jndi-name&gt;example1/StatelessSession&lt;/jndi-name&gt;
        &lt;/session&gt;

        &lt;session&gt;
            &lt;ejb-name&gt;StatefulSession&lt;/ejb-name&gt;
            &lt;jndi-name&gt;example1/StatefulSession&lt;/jndi-name&gt;
        &lt;/session&gt;
    &lt;/enterprise-beans&gt;
&lt;/jboss&gt;
</pre></div><div class="figure"><p><a name="SessionClient.java"></a><b>Figure 13.18. The Client</b></p><pre class="programlisting">
import java.io.IOException;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import javax.security.auth.callback.*;
import javax.security.auth.login.*;

/** A simple session client that access the two secured EJBs as the user
passed in on the command line.

@author Scott_Stark@displayscape.com
@version $Revision: 3.0 $
*/
public class SessionClient
{
    static class AppCallbackHandler implements CallbackHandler
    {
        private String username;
        private char[] password;

        public AppCallbackHandler(String username, char[] password)
        {
            this.username = username;
            this.password = password;
        }

        public void handle(Callback[] callbacks) throws
            java.io.IOException, UnsupportedCallbackException
        {
            for (int i = 0; i &lt; callbacks.length; i++)
            {
                if (callbacks[i] instanceof NameCallback)
                {
                    NameCallback nc = (NameCallback)callbacks[i];
                    nc.setName(username);
                }
                else if (callbacks[i] instanceof PasswordCallback)
                {
                    PasswordCallback pc = (PasswordCallback)callbacks[i];
                    pc.setPassword(password);
                }
                else
                {
                    throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
                }
            }
        }
    }

    public static void main(String args[]) throws Exception
    {
        if( args.length != 3 )
            throw new IllegalArgumentException("Usage: username password example");

        String name = args[0];
        char[] password = args[1].toCharArray();
        String example = args[2];
        System.out.println("+++ Running SessionClient with username="+name+", password="+args[1]+", example="+example);
        try
        {
            AppCallbackHandler handler = new AppCallbackHandler(name, password);
            LoginContext lc = new LoginContext("TestClient", handler);
            System.out.println("Created LoginContext");
            lc.login();
        }
        catch (LoginException le)
        {
            System.out.println("Login failed");
            le.printStackTrace();
        }

        try
        {
            InitialContext iniContext = new InitialContext();
            SessionHome home = (SessionHome) iniContext.lookup(example+"/StatelessSession");
            System.out.println("Found StatelessSessionHome");
            Session bean = home.create();
            System.out.println("Created StatelessSession");
            System.out.println("Bean.echo('Hello') -&gt; "+bean.echo("Hello"));
            bean.remove();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        try
        {
            InitialContext iniContext = new InitialContext();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -