- /**
- * Program : WebServiceUtil.java
- * Author : leigq
- * Create : 2010-11-12 上午09:02:05
- *
- * Copyright 2010 by Embedded Internet Solutions Inc.,
- * All rights reserved.
- *
- * This software is the confidential and proprietary information
- * of Embedded Internet Solutions Inc.("Confidential Information").
- * You shall not disclose such Confidential Information and shall
- * use it only in accordance with the terms of the license agreement
- * you entered into with Embedded Internet Solutions Inc.
- *
- */
-
- package cn.ipanel.apps.portalBackOffice.util;
-
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Enumeration;
- import java.util.List;
- import java.util.Properties;
- import java.util.Set;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
-
- import org.apache.log4j.Logger;
-
- import cn.ipanel.apps.portalBackOffice.define.Defines;
- import cn.ipanel.apps.portalBackOffice.domain.WSAddress;
-
- /**
- * webService 工具类
- */
- public class WebServiceUtil {
-
- private Properties properties = new Properties();
-
- private static Logger logger = Logger.getLogger(WebServiceUtil.class);
-
- public WebServiceUtil() {
- properties = PropertyManager.getConfig();
- }
-
- /**
- * 获取WebService配置信息,返回的数据格式为
- * @return List<WSAddress>
- */
- public List<WSAddress> getWebServers() {
- List<WSAddress> result = new ArrayList<WSAddress>();
-
- Enumeration<?> enu = properties.propertyNames();
- Pattern pattern = Pattern.compile("^(wsAddress)X?");
- CONTINUE_POINT: while (enu.hasMoreElements()) {
- try {
- String key = (String) enu.nextElement();
- Matcher matcher = pattern.matcher(key);
- if (!matcher.find())
- continue;
-
- String propertityValue = (String) properties.get(key);
- // 如果不是以';'分隔的,则不处理
- if (propertityValue.indexOf(";") == -1)
- continue;
-
- String[] values = propertityValue.split(";");
- // 如果不是三段规则,则不处理
- if (values.length != 4)
- continue;
-
- for (int i = 0; i < values.length; i++)
- if (values[i] == null || values[i].trim().length() == 0)
- continue CONTINUE_POINT;
-
- result.add(new WSAddress(key, values[0], values[1], values[2],values[3]));
- } catch (Exception e) {
- logger.warn(e);
- }
- }
- return result;
- }
-
- /**
- * 检测此key值是否已经被使用,若重复使用相同key值,会以新的配置覆盖旧的配置
- * @param key
- * @return
- */
- public boolean checkKeyIsExist(String key) {
- Set<Object> keys = properties.keySet();
- if (keys.contains(key))
- return true;
- return false;
- }
- /**
- * 保存WebService配置到property文件
- * @param wsAddress
- * @return
- */
- public boolean storWSAddress(WSAddress wsAddress){
- if (wsAddress == null || checkWSAddressValue(wsAddress))
- throw new RuntimeException("参数不正确,请检查.");
-
- String wsProperty = wsAddress.getAddress() + ";" + wsAddress.getAccessFolder() + ";" + wsAddress.getPublishFolder() + ";" + wsAddress.getVisitURL();
- String wsKey = wsAddress.getWsName();
-
- properties.setProperty(wsKey, wsProperty);
- try {
- properties.store(new FileOutputStream(new File(Defines.CONFIG_FILE_PATH)), null);
- } catch (IOException e) {
- throw new RuntimeException("属性配置存储失败,请检查.");
- }
- return true;
- }
- /**
- * 移除webService配置
- * @param key
- * @return
- * @throws FileNotFoundException
- * @throws IOException
- */
- public boolean removeWSAddress(String key){
- try {
- properties.remove(key);
- properties.store(new FileOutputStream(new File(Defines.CONFIG_FILE_PATH)), "");
- return true;
- } catch (FileNotFoundException e) {
- throw new RuntimeException("配置文件未找到,请检查.");
- } catch (IOException e) {
- throw new RuntimeException("文件存储失败,请检查.");
- }
-
-
- }
-
-
- /**
- * 检测参数是否正确,任何错误或空值都抛异常
- * @param wsAddress
- */
- private boolean checkWSAddressValue(WSAddress wsAddress) {
- String wsName = wsAddress.getWsName();
- if (wsName == null || wsName.trim().length() == 0)
- throw new RuntimeException("参数: wsName为空,请检查.");
-
- String publishFolder = wsAddress.getPublishFolder();
- if (publishFolder == null || publishFolder.trim().length() == 0 || publishFolder.indexOf(";") != -1)
- throw new RuntimeException("参数: publishFolder为空或包含非法字符:';',请检查.");
-
- String address = wsAddress.getAddress();
- if (address == null || address.trim().length() == 0 || address.indexOf(";") != -1)
- throw new RuntimeException("参数: wsAddress为空或包含非法字符:';',请检查.");
-
- String accessFolder = wsAddress.getAccessFolder();
- if (accessFolder == null || accessFolder.trim().length() == 0 || accessFolder.indexOf(";") != -1)
- throw new RuntimeException("参数: accessFolder为空或包含非法字符:';',请检查.");
- String visitURL = wsAddress.getVisitURL();
- if (visitURL == null || visitURL.trim().length() == 0 || visitURL.indexOf(";") != -1)
- throw new RuntimeException("参数: visitURL为空或包含非法字符:';',请检查.");
- return false;
- }
- }
-