axisconfigbuilder.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 641 行 · 第 1/2 页
JAVA
641 行
while (moduleRefs.hasNext()) {
OMElement moduleref = (OMElement) moduleRefs.next();
OMAttribute moduleRefAttribute = moduleref.getAttribute(new QName(TAG_REFERENCE));
String refName = moduleRefAttribute.getAttributeValue();
axisConfig.addGlobalModuleRef(refName);
}
}
/**
* Processes AxisObservers.
*
* @param oservers
*/
private void processObservers(Iterator oservers) {
while (oservers.hasNext()) {
try {
OMElement observerelement = (OMElement) oservers.next();
AxisObserver observer;
OMAttribute trsClas = observerelement.getAttribute(new QName(TAG_CLASS_NAME));
if (trsClas == null) {
log.info(Messages.getMessage(DeploymentErrorMsgs.OBSERVER_ERROR));
return;
}
final String clasName = trsClas.getAttributeValue();
Class observerclass;
try {
observerclass = (Class) org.apache.axis2.java.security.AccessController
.doPrivileged(new PrivilegedExceptionAction() {
public Object run() throws ClassNotFoundException {
return Loader.loadClass(clasName);
}
});
} catch (PrivilegedActionException e) {
throw (ClassNotFoundException) e.getException();
}
observer = (AxisObserver) observerclass.newInstance();
// processing Parameters
// Processing service level parameters
Iterator itr = observerelement.getChildrenWithName(new QName(TAG_PARAMETER));
processParameters(itr, observer, axisConfig);
// initialization
try {
observer.init(axisConfig);
} catch (Throwable e) {
//Observer init may throw runtime exception , but we can stil
// start Axis2
log.info(e.getMessage());
}
axisConfig.addObservers(observer);
} catch (Exception e) {
log.info(e.getMessage());
}
}
}
private ArrayList processPhaseList(OMElement phaseOrders) throws DeploymentException {
ArrayList phaselist = new ArrayList();
Iterator phases = phaseOrders.getChildrenWithName(new QName(TAG_PHASE));
while (phases.hasNext()) {
OMElement phaseelement = (OMElement) phases.next();
String phaseName =
phaseelement.getAttribute(new QName(ATTRIBUTE_NAME)).getAttributeValue();
String phaseClass = phaseelement.getAttributeValue(new QName(TAG_CLASS_NAME));
Phase phase;
try {
phase = getPhase(phaseClass);
} catch (Exception e) {
throw new DeploymentException(
Messages.getMessage("phaseclassnotfound", phaseClass, e.getMessage()));
}
phase.setName(phaseName);
Iterator handlers = phaseelement.getChildrenWithName(new QName(TAG_HANDLER));
while (handlers.hasNext()) {
OMElement omElement = (OMElement) handlers.next();
HandlerDescription handler = processHandler(omElement, axisConfig, phaseName);
handler.getRules().setPhaseName(phaseName);
Utils.loadHandler(axisConfig.getSystemClassLoader(), handler);
try {
phase.addHandler(handler);
} catch (PhaseException e) {
throw new DeploymentException(e);
}
}
phaselist.add(phase);
}
return phaselist;
}
/**
* Processes all the phase orders which are defined in axis2.xml.
*
* @param phaserders
*/
private void processPhaseOrders(Iterator phaserders) throws DeploymentException {
PhasesInfo info = axisConfig.getPhasesInfo();
while (phaserders.hasNext()) {
OMElement phaseOrders = (OMElement) phaserders.next();
String flowType = phaseOrders.getAttribute(new QName(TAG_TYPE)).getAttributeValue();
if (TAG_FLOW_IN.equals(flowType)) {
info.setINPhases(processPhaseList(phaseOrders));
} else if (TAG_FLOW_IN_FAULT.equals(flowType)) {
info.setIN_FaultPhases(processPhaseList(phaseOrders));
} else if (TAG_FLOW_OUT.equals(flowType)) {
info.setOUTPhases(processPhaseList(phaseOrders));
} else if (TAG_FLOW_OUT_FAULT.equals(flowType)) {
info.setOUT_FaultPhases(processPhaseList(phaseOrders));
}
}
}
private void processDefaultModuleVersions(OMElement defaultVersions)
throws DeploymentException {
Iterator moduleVersions = defaultVersions.getChildrenWithName(new QName(TAG_MODULE));
while (moduleVersions.hasNext()) {
OMElement omElement = (OMElement) moduleVersions.next();
String name = omElement.getAttributeValue(new QName(ATTRIBUTE_NAME));
if (name == null) {
throw new DeploymentException(Messages.getMessage("modulenamecannotbenull"));
}
String version =
omElement.getAttributeValue(new QName(ATTRIBUTE_DEFAULT_VERSION));
if (version == null) {
throw new DeploymentException(Messages.getMessage("moduleversioncannotbenull"));
}
axisConfig.addDefaultModuleVersion(name, version);
}
}
private void processTransportReceivers(Iterator trs_senders) throws DeploymentException {
while (trs_senders.hasNext()) {
TransportInDescription transportIN;
OMElement transport = (OMElement) trs_senders.next();
// getting transport Name
OMAttribute trsName = transport.getAttribute(new QName(ATTRIBUTE_NAME));
if (trsName != null) {
String name = trsName.getAttributeValue();
transportIN = new TransportInDescription(name);
// transport impl class
OMAttribute trsClas = transport.getAttribute(new QName(TAG_CLASS_NAME));
if (trsClas != null) {
try {
String clasName = trsClas.getAttributeValue();
Class receiverClass;
receiverClass = Loader.loadClass(clasName);
TransportListener receiver =
(TransportListener) receiverClass.newInstance();
transportIN.setReceiver(receiver);
} catch (NoClassDefFoundError e) {
if(deploymentEngine != null){
throw new DeploymentException(e);
} else {
// Called from createDefaultConfigurationContext in ConfigurationContextFactory
// Please don't throw an exception.
log.debug(Messages.getMessage("classnotfound", trsClas.getAttributeValue()));
}
} catch (ClassNotFoundException e) {
throw new DeploymentException(e);
} catch (IllegalAccessException e) {
throw new DeploymentException(e);
} catch (InstantiationException e) {
throw new DeploymentException(e);
}
}
try {
Iterator itr = transport.getChildrenWithName(new QName(TAG_PARAMETER));
processParameters(itr, transportIN, axisConfig);
// adding to axis2 config
axisConfig.addTransportIn(transportIN);
} catch (AxisFault axisFault) {
throw new DeploymentException(axisFault);
}
}
}
}
private void processTransportSenders(Iterator trs_senders) throws DeploymentException {
while (trs_senders.hasNext()) {
TransportOutDescription transportout;
OMElement transport = (OMElement) trs_senders.next();
// getting transport Name
OMAttribute trsName = transport.getAttribute(new QName(ATTRIBUTE_NAME));
if (trsName != null) {
String name = trsName.getAttributeValue();
transportout = new TransportOutDescription(name);
// transport impl class
OMAttribute trsClas = transport.getAttribute(new QName(TAG_CLASS_NAME));
if (trsClas == null) {
throw new DeploymentException(
Messages.getMessage(DeploymentErrorMsgs.TRANSPORT_SENDER_ERROR, name));
}
String clasName = trsClas.getAttributeValue();
Class sender;
try {
sender = Loader.loadClass(clasName);
TransportSender transportSender = (TransportSender) sender.newInstance();
transportout.setSender(transportSender);
// process Parameters
// processing Parameters
// Processing service level parameters
Iterator itr = transport.getChildrenWithName(new QName(TAG_PARAMETER));
processParameters(itr, transportout, axisConfig);
// adding to axis2 config
axisConfig.addTransportOut(transportout);
} catch (NoClassDefFoundError e) {
if(deploymentEngine != null){
log.debug(Messages.getMessage("errorinloadingts", clasName), e);
throw new DeploymentException(e);
} else {
// Called from createDefaultConfigurationContext in ConfigurationContextFactory
// Please don't throw an exception.
log.debug(Messages.getMessage("classnotfound", trsClas.getAttributeValue()));
}
} catch (ClassNotFoundException e) {
log.debug(Messages.getMessage("errorinloadingts", clasName), e);
throw new DeploymentException(e);
} catch (IllegalAccessException e) {
log.debug(Messages.getMessage("errorinloadingts", clasName), e);
throw new DeploymentException(e);
} catch (InstantiationException e) {
log.debug(Messages.getMessage("errorinloadingts", clasName), e);
throw new DeploymentException(e);
} catch (AxisFault axisFault) {
log.debug(Messages.getMessage("errorinloadingts", clasName), axisFault);
throw new DeploymentException(axisFault);
}
}
}
}
/*
* process data locator configuration for data retrieval.
*/
private void processDataLocatorConfig(OMElement dataLocatorElement) {
OMAttribute serviceOverallDataLocatorclass = dataLocatorElement
.getAttribute(new QName(DRConstants.CLASS_ATTRIBUTE));
if (serviceOverallDataLocatorclass != null) {
String className = serviceOverallDataLocatorclass
.getAttributeValue();
axisConfig.addDataLocatorClassNames(DRConstants.GLOBAL_LEVEL,
className);
}
Iterator iterator = dataLocatorElement.getChildrenWithName(new QName(
DRConstants.DIALECT_LOCATOR_ELEMENT));
while (iterator.hasNext()) {
OMElement locatorElement = (OMElement) iterator.next();
OMAttribute dialect = locatorElement.getAttribute(new QName(
DRConstants.DIALECT_ATTRIBUTE));
OMAttribute dialectclass = locatorElement.getAttribute(new QName(
DRConstants.CLASS_ATTRIBUTE));
axisConfig.addDataLocatorClassNames(dialect.getAttributeValue(),
dialectclass.getAttributeValue());
}
}
protected HashMap processMessageFormatters(OMElement messageFormattersElement)
throws DeploymentException {
try {
return super.processMessageFormatters(messageFormattersElement);
} catch (NoClassDefFoundError e) {
if (deploymentEngine != null) {
throw new DeploymentException(e);
} else {
// Called from createDefaultConfigurationContext in ConfigurationContextFactory
// Please don't throw an exception.
return new HashMap();
}
}
}
protected HashMap processMessageBuilders(OMElement messageBuildersElement)
throws DeploymentException {
try {
return super.processMessageBuilders(messageBuildersElement);
} catch (NoClassDefFoundError e) {
if (deploymentEngine != null) {
throw new DeploymentException(e);
} else {
// Called from createDefaultConfigurationContext in ConfigurationContextFactory
// Please don't throw an exception.
return new HashMap();
}
}
}
private Phase getPhase(String className)
throws ClassNotFoundException, IllegalAccessException, InstantiationException {
if (className == null) {
return new Phase();
}
Class phaseClass = Loader.loadClass(axisConfig.getSystemClassLoader(), className);
return (Phase) phaseClass.newInstance();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?