热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在eclipse的server视图中适配TongWeb

经过我一段努力终于将这个关于TongWeb插件搞定,期间也走了一些弯路,现在把大致的过程介绍一下:要想在eclispse的server视图中添加Tongweb选项,千万不能硬来,直接通过

    经过我一段努力终于将这个关于TongWeb插件搞定,期间也走了一些弯路,现在把大致的过程介绍一下:要想在eclispse的server视图中添加Tongweb选项,千万不能硬来,直接通过修改server视图的源码来达到此目的,这样做很费劲,原因有二:一、你等于把server要实现的功能,自己再重现实现一下,看看它复杂的源码,你会觉得你要干的绝对是一个惊人的工程;二,这样做的话,也不符合插件可重用的特点。刚开始我也是想着改server视图的源码,后来,发现那是一个不可能的事,太难了。实际上,要想在srever视图中添加自己服务的选现,就要搞搞另外一个插件org.eclipse.jst.server.generic.core,有人说可以看看tongcat的server视图的插件,但是tomcat的这个插件做得太完美了,而且tomcat自己定义了自己的一套东西,像Jboss,Websphere,Oracle OC4J Standalone Server等他们公用一套东西。所以选择看看org.eclipse.jst.server.generic.core插件,这样你可以抽取适用于Jboss,Websphere,Oracle OC4J Standalone Server这几类服务的共性东西,

    这项工作大致分一下几步:

    第一步:从plugin.xml文件搞起,在server视图中添加新的Tongweb服务

             point="org.eclipse.wst.server.core.runtimeTypes">
                  class="org.eclipse.jst.server.generic.core.internal.GenericServerRuntime"
            description="description"
            id="org.eclipse.jst.server.kingserver.runtimeType2"
            name="%genericCategory"
            vendor="TongWeb1"
            version="1.0">
          
            
            
            
            
     
  

   此扩展点定义了新建Tongweb服务的选择项,其中的moduleType定义了Tongweb支持的几种项目的类型。其中,在GenericServerRuntime中的validate()方法中添加关于启动服务的路径验证。

            point="org.eclipse.wst.server.core.serverTypes">
                  runtime="true"
            behaviourClass="org.eclipse.jst.server.kingserver.core.TongwebServerBehaviour"
            class="org.eclipse.jst.server.generic.core.internal.GenericServer"
            description="%pluginDescription"
            id="org.eclipse.jst.server.kingserver.tongweb1"
            initialState="stopped"
            launchCOnfigId="org.eclipse.jst.server.kingserver.core.launchConfigurationType"
            name="%genericCategory"
            startBeforePublish="true" hasCOnfiguration="false" launchModes="run"
            runtimeTypeId="org.eclipse.jst.server.kingserver.runtimeType2">
     
  

   此扩展点添加Tongweb的一些启动配置选项,launchCOnfigId="org.eclipse.jst.server.kingserver.core.launchConfigurationType"中指定启动Tongweb的类,TongwebServerBehaviour实际上是关于Tongweb的一些配置描述,主要是添加一些关于获取Tongweb启动参数的方法,


            point="org.eclipse.wst.server.ui.wizardFragments">
                  class="org.eclipse.jst.server.generic.ui.internal.GenericServerRuntimeWizardFragment"
            id="org.eclipse.jst.server.kingserver.runtime"
            typeIds="org.eclipse.jst.server.kingserver.runtimeType2"/>
                  class="org.eclipse.jst.server.generic.ui.internal.GenericServerWizardFragment"
            id="org.eclipse.jst.server.kingserver.server"
            typeIds="org.eclipse.jst.server.kingserver.tongweb1"/>
  
            point="org.eclipse.wst.server.ui.serverImages">
                  icon="icons/tongweb1.gif"
            id="org.eclipse.jst.server.kingserver.image1"
            typeIds="org.eclipse.jst.server.kingserver.tongweb1">
     
  

    此扩展点主要是在新建的向导页中加入Tongwen启动的选项,org.eclipse.wst.server.ui.serverImages这个扩展点是添加向导页中所需要的图片

有了以上的这些配置,我们立刻就能在server视图中添加新的Tongweb服务。

   
       
        

  

    此扩展点主要是通过加载tongweb.serverdef文件,gerneric server插件会专门去解析这个tongweb.serverdef文件,所以,要想tongweb的配置正确,多多阅读serverdef的定义标准,很关键。这里面有关于serverdef文件的解释

http://www.eclipse.org/webtools/jst/components/server/tutorials/genericServers/ServerDefinitionExplained.html 反正我看了好几遍。

            type="string" cOntext="server" default="admin" />

     在新建服务向导中添加关于启动Tongweb服务的配置属性,包括指定Tongweb的目录,启动的端口等

    
        jst.web
        ${wasHome}/autodeploy
        org.eclipse.jst.server.generic.antpublisher
    

     配置Tongweb服务的应用部署的方式,

    

        com.tongweb.server.PELaunch
        start
        ${wasHome}
       -Xms800m -Xmx800m -Xmn400m -XX:+UnlockDiagnosticVMOptions -XX:PermSize=128m -XX:MaxPermSize=128m -XX:NewRatio=2 -XX:+LogVMOutput -XX:LogFile=${wasHome}/bin/../logs/jvm.log -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.util.logging.manager=com.tongweb.server.logging.ServerLogManager -Djava.library.path=${wasHome}/bin/../lib:${JAVA_HOME}/bin:${wasHome}/bin/../bin -Djava.endorsed.dirs=${wasHome}/bin/../lib/endorsed -Djavax.management.builder.initial=com.tongweb.advance.admin.AppServerMBeanServerBuilder -Djava.security.auth.login.cOnfig=${wasHome}/bin/../config/login.conf -Djmx.invoke.getters=true -Djava.ext.dirs=${JAVA_HOME}/lib/ext:${JAVA_HOME}/jre/lib/ext:${wasHome}/bin/../lib/ext:${wasHome}/bin/../javadb/lib -Dtongweb.root=${wasHome}/bin/.. -Djava.awt.headless=true -Dtongweb.serverName=server -Dtongweb.verbose=true -Djava.rmi.server.RMIClassLoaderSpi=com.tongweb.server.TongWebRMIClassLoader -Djavax.net.ssl.keyStore=${wasHome}/bin/../config/server.keystore -Djavax.net.ssl.trustStore=${wasHome}/bin/../config/cacerts -Djava.security.policy=${wasHome}/bin/../config/server.policy -Dtongweb.envirOnmentFactory=com.tongweb.config.serverbeans.AppserverConfigEnvironmentFactory -Dtongweb.pluggable.repository=com.tongweb.advance.server.pluggable.EEPluggableFeatureImpl -Dtongweb.logFile=${wasHome}/bin/../logs/server.log -Dtongweb.cOnfigFile=${wasHome}/bin/../config -Dtongweb.identity=false -Dtongweb.taglibs=twns-jstl.jar,jsf-impl.jar -Dtongweb.taglisteners=jsf-impl.jar -Dtongweb.classloader.sharedChainJars=${wasHome}/bin/../lib/ant/lib/ant.jar -Dtongweb.classloader.optiOnalOverrideableChain=webservices-rt.jar,webservices-tools.jar -Dtongweb.classloader.excludesList=admin-cli.jar,twns-anttask.jar,twns-el.jar -Dtongweb.classloader.appserverChainJars=admin-cli.jar,j2ee-svc.jar
        tongweb.launch
    

    
        com.tongweb.server.PELaunch
        stop
        -Xmx512m -XX:+UnlockDiagnosticVMOptions -XX:MaxPermSize=192m -XX:NewRatio=2 -XX:+LogVMOutput -XX:LogFile=${wasHome}/bin/../logs/jvm.log -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.util.logging.manager=com.tongweb.server.logging.ServerLogManager -Djava.library.path=${wasHome}/bin/../lib:../j2sdk-image-product/bin:${wasHome}/bin/../bin -Djava.endorsed.dirs=${wasHome}/bin/../lib/endorsed -Djavax.management.builder.initial=com.tongweb.advance.admin.AppServerMBeanServerBuilder -Djava.security.auth.login.cOnfig=${wasHome}/bin/../config/login.conf -Djmx.invoke.getters=true -Djava.ext.dirs=../j2sdk-image-product/lib/ext:../j2sdk-image-product/jre/lib/ext:${wasHome}/bin/../lib/ext:${wasHome}/bin/../javadb/lib -Dtongweb.root=${wasHome}/bin/.. -Dtongweb.serverName=server -Dtongweb.verbose=true -Djava.rmi.server.RMIClassLoaderSpi=com.tongweb.server.TongWebRMIClassLoader -Djavax.net.ssl.keyStore=${wasHome}/bin/../config/server.keystore -Djavax.net.ssl.trustStore=${wasHome}/bin/../config/cacerts -Djava.security.policy=${wasHome}/bin/../config/server.policy -Dtongweb.envirOnmentFactory=com.tongweb.config.serverbeans.AppserverConfigEnvironmentFactory -Dtongweb.pluggable.repository=com.tongweb.advance.server.pluggable.EEPluggableFeatureImpl -Dtongweb.logFile=${wasHome}/bin/../logs/server.log -Dtongweb.cOnfigFile=${wasHome}/bin/../config -Dtongweb.identity=false -Dtongweb.taglibs=twns-jstl.jar,jsf-impl.jar -Dtongweb.taglisteners=jsf-impl.jar -Dtongweb.classloader.sharedChainJars=${wasHome}/bin/../lib/ant/lib/ant.jar -Dtongweb.classloader.optiOnalOverrideableChain=webservices-rt.jar,webservices-tools.jar -Dtongweb.classloader.excludesList=admin-cli.jar,twns-anttask.jar -Dtongweb.classloader.appserverChainJars=admin-cli.jar,j2ee-svc.jar    
        ${wasHome}
        tongweb.launch
    

      指定Tongweb启动和停止的详细配置参数,

   第二步:在server视图中启动新建的Tongweb服务

generic server适配了很多的服务,但是,还没有适配Tongweb,所以他的启动的类需要我们自己来写,Tongweb要想启动,需要配置:工作目录workingDirectory、VM参数、Tongweb启动类、依赖的jar包。这个类需要继承AbstractJavaLaunchConfigurationDelegate类就可以,然后将参数一个一个的加入进来。这个需要慢慢来写,下面是Tongweb在终端启动的命令:

    java -classpath /opt/public/jdk1.6.0_18/lib/tools.jar:/usr/TongWeb5.0/bin/../lib/launch.jar:/usr/TongWeb5.0/bin/../lib/license.jar -Xms800m -Xmx800m -Xmn400m -XX:+UnlockDiagnosticVMOptions -XX:PermSize=128m -XX:MaxPermSize=128m -XX:NewRatio=2 -XX:+LogVMOutput -XX:LogFile=/usr/TongWeb5.0/bin/../logs/jvm.log -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=360000 -Djava.util.logging.manager=com.tongweb.server.logging.ServerLogManager -Djava.library.path=/usr/TongWeb5.0/bin/../lib:/opt/public/jdk1.6.0_18/bin:/usr/TongWeb5.0/bin/../bin -Djava.endorsed.dirs=/usr/TongWeb5.0/bin/../lib/endorsed -Djavax.management.builder.initial=com.tongweb.advance.admin.AppServerMBeanServerBuilder -Djava.security.auth.login.cOnfig=/usr/TongWeb5.0/bin/../config/login.conf -Djmx.invoke.getters=true -Djava.ext.dirs=/opt/public/jdk1.6.0_18/lib/ext:/opt/public/jdk1.6.0_18/jre/lib/ext:/usr/TongWeb5.0/bin/../lib/ext:/usr/TongWeb5.0/bin/../javadb/lib -Dtongweb.root=/usr/TongWeb5.0/bin/.. -Djava.awt.headless=true -Dtongweb.serverName=server -Dtongweb.verbose=true -Djava.rmi.server.RMIClassLoaderSpi=com.tongweb.server.TongWebRMIClassLoader -Djavax.net.ssl.keyStore=/usr/TongWeb5.0/bin/../config/server.keystore -Djavax.net.ssl.trustStore=/usr/TongWeb5.0/bin/../config/cacerts -Djava.security.policy=/usr/TongWeb5.0/bin/../config/server.policy -Dtongweb.envirOnmentFactory=com.tongweb.config.serverbeans.AppserverConfigEnvironmentFactory -Dtongweb.pluggable.repository=com.tongweb.advance.server.pluggable.EEPluggableFeatureImpl -Dtongweb.logFile=/usr/TongWeb5.0/bin/../logs/server.log -Dtongweb.cOnfigFile=/usr/TongWeb5.0/bin/../config -Dtongweb.identity=false -Dtongweb.taglibs=twns-jstl.jar,jsf-impl.jar -Dtongweb.taglisteners=jsf-impl.jar -Dtongweb.classloader.sharedChainJars=/usr/TongWeb5.0/bin/../lib/ant/lib/ant.jar -Dtongweb.classloader.optiOnalOverrideableChain=webservices-rt.jar,webservices-tools.jar -Dtongweb.classloader.excludesList=admin-cli.jar,twns-anttask.jar,twns-el.jar -Dtongweb.classloader.appserverChainJars=admin-cli.jar,j2ee-svc.jar com.tongweb.server.PELaunch start

    其中/opt/public/jdk1.6.0_18/为JDK的路径,/usr/TongWeb5.0/为Tongweb文件路径,有了这个关键参数,启动Tongweb就没什么问题了。

    第三步:将应用在Tongweb中部署

    虽然,Tongweb能够启动,但是应用去还没有办法部署进来,怎么部署这个应用呢?

    首先,需要明白Tongweb的两种部署方式:通过Tongweb的游览器控制台部署和直接将应用的war包放到Tongweb的autodeploy目录下面进行部署,毫无疑问通过server视图中的Tongweb部署应用要采用第二中方式。

    这里将应用.war包拷贝到autodeploy目录下面主要采用ant方式,

             point="org.eclipse.jst.server.kingserver.genericpublisher">
                        class="org.eclipse.jst.server.kingserver.core.AntPublisher"
              id="org.eclipse.jst.server.generic.antpublisher">
     
  

   通过此扩展点来获取指定Ant的build方式,org.eclipse.jst.server.kingserver.core.AntPublisher为build类,org.eclipse.jst.server.kingserver.genericpublisher扩展点是我们自己定义的,类似于generic server插件的自定义的org.eclipse.jst.server.generic.core。genericpublisher扩展点,有了这些部署应用应该能轻松搞定!

   





推荐阅读
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 探索Web 2.0新概念:Widget
    尽管你可能尚未注意到Widget,但正如几年前对RSS的陌生一样,这一概念正逐渐走入大众视野。据美国某权威杂志预测,2007年将是Widget年。本文将详细介绍Widget的定义、功能及其未来发展趋势。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
author-avatar
国际物流-Ann
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有