windchill交流第二篇:让自己的方法随windchill服务启动---添加windchill客制化服务...
2010-04-30 15:51
78 查看
[color=red]所有文章全部原创,如有不对,欢迎留言指正。[/color]
通过添加Windchill客制化服务,可以让自己业务相关的对象在Windchill启动时进行初始化。如定制数据缓存,初始化静态变量,从而减少用户访问数据库的频率,提高访问相关数据的速度。
废话不多说,直接上代码,照着下面的步骤一步步来就ok。
/*************************************************************/
第一步:定义自己的业务接口ServiceInterface ,用来存放一些静态变量,方便其实现类的使用,我在这里将静态变量定义到了实现类中,所以只需写一个空的接口即可,代码如下:
/*************************************************************/
第二步,定义该接口的第一个实现类ServiceInterfaceImp ,同时需要实现wt.method.RemoteAccess类,这个类里的相关代码是无需修改的。
第三步,定义客制化服务启动和关闭的类MyService。
//该类需要继承wt.services.StandardManager类,并实现我们刚才定义的接口ServiceInterface,详细注释见代码:
第四步,将class文件copy到codebase对应目录下,然后打开<WT_HOME>/site.xconf增加如下内容:
修改完site.xconf文件,windchill shell中执行如下命令:
第五步,重启windchill MethodServer,观察MethodServer窗口,可以看到:
先执行MyBusiness类的初始化方法newMyBusiness(),后执行performStartupProcess()方法。
然后关闭MethodServer的时候,可以看到MyBusiness类的performShutdownProcess()方法执行。
:D :) :(
按照我的上述步骤进行,就算你是个windchill超级新手,也会成功。原理我就不在这里说了,大家有空可以多看看windchill的api。 :D
通过添加Windchill客制化服务,可以让自己业务相关的对象在Windchill启动时进行初始化。如定制数据缓存,初始化静态变量,从而减少用户访问数据库的频率,提高访问相关数据的速度。
废话不多说,直接上代码,照着下面的步骤一步步来就ok。
/*************************************************************/
第一步:定义自己的业务接口ServiceInterface ,用来存放一些静态变量,方便其实现类的使用,我在这里将静态变量定义到了实现类中,所以只需写一个空的接口即可,代码如下:
package com.wcservice;
/**
*
* <p>Description: </p>
* @author:
* @time: 2010-4-30 下午05:03:35
* @version 1.0
*/
public interface ServiceInterface {
//##begin user.attributes preserve=yes
//##end user.attributes
//##begin static.initialization preserve=yes
//##end static.initialization
//##begin user.operations preserve=yes
//##end user.operations
}
/*************************************************************/
第二步,定义该接口的第一个实现类ServiceInterfaceImp ,同时需要实现wt.method.RemoteAccess类,这个类里的相关代码是无需修改的。
package com.wcservice;
import java.io.Serializable;
import java.lang.String;
import wt.method.RemoteMethodServer;
import wt.services.Manager;
import wt.services.ManagerServiceFactory;
import wt.util.WTException;
/**
*
* <p>Description: </p>
* @author:
* @time: 2010-4-30 下午04:57:53
* @version 1.0
*/
public class ServiceInterfaceImp implements wt.method.RemoteAccess,
ServiceInterface, Serializable {
// --- Attribute Section ---
static final boolean SERVER = RemoteMethodServer.ServerFlag;
private static final String FC_RESOURCE = "wt.fc.fcResource";
private static final String CLASSNAME = ServiceInterfaceImp.class.getName();
// --- Operation Section ---
/**
* @return Manager
* @exception wt.util.WTException
*/
private static Manager getManager() throws WTException {
Manager manager = ManagerServiceFactory.getDefault().getManager(
ServiceInterface.class);
if (manager == null) {
Object[] param = {CLASSNAME};
throw new WTException(FC_RESOURCE,
wt.fc.fcResource.UNREGISTERED_SERVICE, param);
}
return manager;
}
}
第三步,定义客制化服务启动和关闭的类MyService。
//该类需要继承wt.services.StandardManager类,并实现我们刚才定义的接口ServiceInterface,详细注释见代码:
package com.wcservice;
import java.io.Serializable;
import wt.services.ManagerException;
import wt.services.StandardManager;
import wt.util.WTException;
/**
*
* <p>Description: 定义windchill客制化服务启动和停止的方法,同时定义创建该类对象的方法 </p>
* @author:
* @time: 2010-4-30 下午05:18:26
* @version 1.0
*/
public class MyBusiness extends StandardManager implements ServiceInterface,Serializable {
// --- Operation Section ---
/**
* 返回MyBusiness的对象,并调用父类StandardManager的initialize()方法进行初始化,该方法内容无需修改,方法名格式为new+你的类名
*/
public static MyBusiness newMyBusiness() throws WTException {
System.out.println(MyBusiness.class.getName()+".newMyBusiness(),MyBusiness对象初始化完毕。");
MyBusiness instance = new MyBusiness();
instance.initialize();
return instance;
}
// ##begin user.operations preserve=yes
protected void performStartupProcess() throws ManagerException {
//write your business here,while windchill start,it execute
System.out.println(MyBusiness.class.getName()+".performStartupProcess()方法执行,windchill服务正在启动!");
}
protected void performShutdownProcess() throws ManagerException {
//write your business here,while windchill stop,it execute
System.out.println(MyBusiness.class.getName()+".performShutdownProcess()方法执行,windchill服务正在停止!");
}
}
第四步,将class文件copy到codebase对应目录下,然后打开<WT_HOME>/site.xconf增加如下内容:
<!--my cache-->
<!--只需修改value值,格式为 自定义接口+"/"+自定义实现类--->
<Property name="wt.services.service.3500" overridable="true"
targetFile="codebase/wt.properties"
value="com.wcservice.ServiceInterface/com.wcservice.MyBusiness"/>
修改完site.xconf文件,windchill shell中执行如下命令:
xconfmanager -p
第五步,重启windchill MethodServer,观察MethodServer窗口,可以看到:
先执行MyBusiness类的初始化方法newMyBusiness(),后执行performStartupProcess()方法。
然后关闭MethodServer的时候,可以看到MyBusiness类的performShutdownProcess()方法执行。
:D :) :(
按照我的上述步骤进行,就算你是个windchill超级新手,也会成功。原理我就不在这里说了,大家有空可以多看看windchill的api。 :D
相关文章推荐
- 【原创】Windows下Mysql Cluster集群启动脚本与启动服务添加方法
- systemd添加自定义系统服务设置自定义开机启动的方法
- Windows中添加自己的程序到开机启动中(添加服务,添加注册表)
- linux 把nginx加入到系统服务,并开机自己启动的方法
- CentOS下添加程序到服务并且设置服务自动启动的方法
- systemd添加自定义系统服务设置自定义开机启动的方法
- Centos 6&7下服务启动方法及添加到开机启动
- Windows下Mysql Cluster集群启动脚本与启动服务添加方法
- vmware虚拟机添加网卡后,RHEL6网络服务不能正常启动解决方法
- 用VS2003部署,让服务程序安装完后立即启动服务并且选中“允许服务与桌面交互”及添加服务描述的方法
- vmware虚拟机添加网卡后,RHEL6网络服务不能正常启动解决方法
- linux 把nginx加入到系统服务,并开机自己启动的方法
- 如何自己添加开机启动服务
- linux 把nginx加入到系统服务,并开机自己启动的方法
- web服务启动spring自己主动运行ApplicationListener的使用方法
- Centos 6和Centos 7下服务启动方法及添加到开机启动项的方法
- ORACLE“监听程序未启动或数据库服务未注册到该监听程序”解决方法
- 转贴 WinCE下直接启动自己应用程序的方法
- android 有关怎么自己添加系统级服务 java层 重点aidl
- MongoDB下,启动服务时,出现“服务没有响应控制功能”解决方法