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

📄 javebeanremotingdestinationbootstrapservice.java

📁 快速FLEX+J2EE开发工具。具体自动生成功能代码功能。
💻 JAVA
字号:
/*
 * Copyright 2008 [CompanyName], Inc. All rights reserved.
 * Website: http://www.pomer.org.cn/
 */
package cn.org.pomer.flex.remoting.services;

import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.util.ClassUtils;
import org.springframework.util.StringUtils;

import cn.org.pomer.flex.remoting.annotation.BeanType;
import cn.org.pomer.flex.remoting.annotation.RemoteObject;
import flex.management.runtime.messaging.services.ServiceAdapterControl;
import flex.management.runtime.messaging.services.ServiceAdapterControlMBean;
import flex.messaging.Destination;
import flex.messaging.config.ConfigMap;
import flex.messaging.services.AbstractBootstrapService;
import flex.messaging.services.Service;
import flex.messaging.services.ServiceAdapter;
import flex.messaging.services.remoting.RemotingDestination;
import flex.messaging.services.remoting.adapters.JavaAdapter;

/**
 * 
 * @author Linlin Yu
 * 
 */
public class JaveBeanRemotingDestinationBootstrapService extends
		AbstractBootstrapService {

	@Override
	public void initialize(String id, ConfigMap properties) {
		String serviceId = properties.getPropertyAsString("service-id",
				"remoting-service");
		Service remotingService = broker.getService(serviceId);
		if (remotingService == null) {
			throw new RuntimeException("not found Service with serviceId:"
					+ serviceId);
		}

		createJavaBeanDestinations(remotingService);

	}

	private void createJavaBeanDestinations(Service remotingService) {
		List<String> addedBeanNames = new ArrayList();
		List<Class> roJavaBeans = getRemoteObjectJavaBean();
		for (Class clazz : roJavaBeans) {
			String destinationId = ClassUtils.getShortName(clazz);
			destinationId = StringUtils.uncapitalize(destinationId);
			RemotingDestination destination = (RemotingDestination) remotingService
					.createDestination(destinationId);

			String source = clazz.getName();
			destination.setSource(source);
			destination.addChannel("my-amf");

			remotingService.addDestination(destination);

			addedBeanNames.add(destinationId);
		}
		System.out
				.println("======[Auto Export JavaBean to RemotingDestination],beans="
						+ addedBeanNames);

	}

	@Override
	public void start() {
		// TODO Auto-generated method stub

	}

	@Override
	public void stop() {
		// TODO Auto-generated method stub

	}

	public static void main(String[] args) {
		JaveBeanRemotingDestinationBootstrapService b = new JaveBeanRemotingDestinationBootstrapService();
		List<Class> lst = b.getRemoteObjectJavaBean();
		for (Class class1 : lst) {
			System.out.println(class1.getName());
		}
	}

	private List<Class> getRemoteObjectJavaBean() {
		ResourcePatternResolver rl = new PathMatchingResourcePatternResolver();
		List<Class> result = new ArrayList();
		try {
			String classPattern = "classpath*:/**/*.class";
			Resource[] resources = rl.getResources(classPattern);
			for (int i = 0; i < resources.length; i++) {
				Resource resource = resources[i];
				String fileName = resource.getURL().toString();

				String className = fileName.substring(
						fileName.indexOf("WEB-INF/classes".substring(0))
								+ "WEB-INF/classes".length() + 1,
						fileName.length() - ".class".length())
						.replace('/', '.');
				Class clazz = Class.forName(className);
				if (isJavaBean(clazz)) {
					result.add(clazz);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

	private boolean isJavaBean(Class clazz) {
		if (clazz.isAnnotationPresent(RemoteObject.class)
				&& !clazz.isInterface() && !isAbstract(clazz)
				&& !clazz.isAnonymousClass() && !clazz.isMemberClass()) {
			RemoteObject ro = (RemoteObject) clazz
					.getAnnotation(RemoteObject.class);
			BeanType value = ro.value();
			if (value == BeanType.JavaBean) {
				return true;
			}
		}
		return false;
	}

	boolean isAbstract(Class type) {
		return (type.getModifiers() ^ Modifier.ABSTRACT) == 0;
	}

}

⌨️ 快捷键说明

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