This can be act as a dynamic proxy. 놀새~ will be using this class to implement Red Hat internal project.


import org.jboss.beans.metadata.api.annotations.Inject;
import org.jboss.logging.Logger;
import org.jboss.naming.NamingService;
import org.jgroups.Address;
import org.jgroups.ChannelException;
import org.jgroups.ChannelNotConnectedException;
import org.jgroups.JChannel;
import org.jgroups.Message;
import org.jgroups.ReceiverAdapter;
import org.jgroups.View;
import org.jgroups.stack.IpAddress;


public class NodeManager {
    
    private int servicePort;
    private String serviceAddress;
        
    
    private static final Logger log = Logger.getLogger(NodeManager.class);
    
    private JChannel channel;
    
    @Inject(bean = "jboss:service=Naming",  dependentState="Start")
    public void setNaming(NamingService naming) {
        this.servicePort = naming.getPort();
    }
    
    
    public String getMasterAddress() {
        return null;
    }
    
    /**
    * udp.xml is using in jgroups sample
    */
    public void create() {
        try {
            channel = new JChannel(NodeManager.class.getResource("/META-INF/udp.xml"));
            channel.setReceiver(new NodeReceiverAdapter());
            
        } catch (ChannelException e) {
            e.printStackTrace();
        }
        
    }
    
    public void start() {
        try {
            channel.connect("demo-cluster");
            
                        
            log.info(channel.getProperties());
            IpAddress ip = (IpAddress) channel.getLocalAddress();
    
            this.serviceAddress = ip.getIpAddress().getHostAddress();
            log.info("Current Node's binding URL : [" + serviceAddress + ":" + servicePort + "]");
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }
    
    public void stop() {
        channel.disconnect();
        channel.close();
        log.info("Stopping Node Manager");
        
    }
    public void destroy() {
        log.info("Destroy");
    }
    
        
    class NodeReceiverAdapter extends ReceiverAdapter {
        Address dest = null;
        Address local = channel.getLocalAddress();
        public void receive(Message msg) {
            dest = msg.getSrc();
            log.info("received msg from " + msg.getSrc() + ": "    + msg.getObject());
            Message returnMsg = new Message(dest, local, serviceAddress + ":" + servicePort);
            log.info("return current context url is [" + serviceAddress + ":" + servicePort + "]");
                
            try {
                channel.send(returnMsg);
            } catch (ChannelNotConnectedException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        
        public void viewAccepted(View view) {
            log.info("View Accepted - [" + view.getMembers() + "]");
        }
    }
}

크리에이티브 커먼즈 라이센스
Creative Commons License
2009/04/10 08:37 2009/04/10 08:37

JBoss 5.0의 경우 설정 방식이나 디렉토리 구조가 조금 바뀌었습니다.

기존 방식에서는 $SERVER_HOME/deploy/jboss-web.deployer 파일을 이용하여 포트를 변경하였으나, 5.0에서 포트를 변경하기 위해서는 변경된 $SERVER_HOME/deploy/jbossweb.sar 디렉토리 하위의 server.xml파일을 변경하시면 됩니다.

<!-- A HTTP/1.1 Connector on port 8080 -->
      <Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}"
               connectionTimeout="20000" redirectPort="8443" />

      <!-- Add this option to the connector to avoid problems with
          .NET clients that don't implement HTTP/1.1 correctly
         restrictedUserAgents="^.*MS Web Services Client Protocol 1.1.4322.*$"
      -->

      <!-- A AJP 1.3 Connector on port 8009 -->
      <Connector protocol="AJP/1.3" port="8009" address="${jboss.bind.address}"
         redirectPort="8443" />


필요에 따라 AJP Connector도 변경하시면 됩니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2009/03/27 10:24 2009/03/27 10:24

기본적으로 JBoss AS의 라이브러리 폴더에서는 찾을 수 없으나 maven java에서 해당 jar를 다운로드 받아야 합니다.

http://www.mavenjava.com/org/jboss/test/jboss-test/

크리에이티브 커먼즈 라이센스
Creative Commons License
2009/02/11 11:00 2009/02/11 11:00