📄 javebeanremotingdestinationbootstrapservice.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 + -