工作笔记

[b]How to clean uninstall TIBCO stuff on win32?[/b]

C:\Program Files\Common Files\InstallShield
C:\Documents and Settings\Michael\.TIBCO
C:\Documents and Settings\Michael\.TIBCOEnvInfo

[b]How to Add remote Machine with BW DU?[/b]

1. Install rv, tra, admin on one machine.
2. Start <TIBCO_HOME>/administrator/domain/<DOMAIN_NAME>/bin/tibcoadmin_<DOMAIN_NAME>
Start
<TIBCO_HOME>/tra/domain/<DOMAIN_NAME>/hawkagent_<DOMAIN_NAME>
3. Install rv, tra, bw on the other machine.
4. Start
<TIBCO_HOME>/tra/5.7/bin/domainutility, note that add admin ip
between protocol and port, then click discover domain button
[img]http://dl.iteye.com/upload/picture/pic/106114/a6140c4c-c746-35a0-b30e-895fb4c102f9.jpg[/img]
5. Start
<TIBCO_HOME>/tra/domain/<DOMAIN_NAME>/hawkagent_<DOMAIN_NAME>


[b]How to build AMX Containers?[/b]

yangxm@zhangx-dt-1:~/sfdev/SFAMX/scripts$ ant -f containers.xml -Ddist.dir=dest

[b]How to build AMX Distribution?[/b]

yangxm@zhangx-dt-1:~/sfdev/SFAMX/scripts$ ant -f setup.xml -Ddist.dir=dist
create common/scripts/base.properties
copy target installer to download dir according to <product>_common.properties
yangxm@zhangx-dt-1:~/sfdev/SFAMX/scripts$ ant -f amsg_linux24gl23_x86_64.xml
create SFAMX/distribution/amsg/scripts/amsg.properties

make a specical platform distribution,
yangxm@zhangx-dt-1:~/sfdev/SFAMX/distribution/amsg/scripts/ant -f build.xml

make all distributions, so you need to copy all installers
yangxm@zhangx-dt-1:~/sfdev/SFAMX/scripts$ ant -f distributions.xml


[b]How to build BW Distribution?[/b]

step1.D:\silverfabric\scripts>ant -f setup_solaris_x86.xml
1) (optional) modify base.properties
2) create install, download, dist dir outside of root dir, script doen't create them automatically.
3) update all paramenters in releated bw_5.9.2_sol8_x86.xml and its dependent xml

step2. D:\silverfabric\scripts>ant -f bw_5.9.2_sol8_x86.xml
then all product properties are created.

step3. D:\silverfabric\bw\scripts>ant -f distribution.xml

NOTE 1: After you build successfully, you MUST delete the stuff remained in tibco home
bash-3.00$rm -rf /tibco/uudidev/InstallShield/Universal/*
or
/tibco/uudidev/InstallShield /tibco/uudidev/.TIBC*
otherwise, you'll run into following error
....................................................................................
bw.distribution.update.install.info:
[echo] /tibco/uudidev/sfdev/scripts/../../install
BUILD FAILED
/tibco/uudidev/sfdev/bw/scripts/distribution.xml:75: /tibco/uudidev/install/_installInfo does not exist.
....................................................................................

NOTE 2: When you run /tibco/uudidev/sfdev/scripts/build_bw_distributions_rollup.xml
If you're using ant 1.7 above version, for example, ant 1.8, you must add force="true" to /tibco/uudidev/sfdev/admin/scripts/distribution.xml 121.
<copy file="${root}/adminExtension/index.jsp" tofile="${installation.root}/administrator/${admin.version}/tomcat/webapps/ROOT/index.jsp" overwrite="true" force="true"/>
Or you would rather assigne all write rights to checked out code.
......................................................................................
admin.distribution.package:
[copy] Copying 1 file to /tibco/uudidev/install/administrator/5.7/tomcat/webapps/ROOT

BUILD FAILED
/tibco/uudidev/sfdev/admin/scripts/distribution.xml:123: Failed to copy /tibco/uudidev/sfdev/adminExtension/index.jsp to /tibco/uudidev/install/administrator/5.7/tomcat/webapps/ROOT/index.jsp due to can't write to read-only destination file /tibco/uudidev/install/administrator/5.7/tomcat/webapps/ROOT/index.jsp
......................................................................................

[b]How to make ant scripts and Build EJBBT distribution?[/b]

step1. You'd better mannually install all related products, and record all settings first.

step2. Create following three files distributions/scripts:
ejbbt.xml
ejbbt_setup.xml
ejbbt_common.properties
Check if ejbbt_setup.xml need to add or remove property and values according to step1 settings.

step3. Create build.xml and copy a response file to ejbbt/scripts dir from step1.
Check if build.xml need to add or remove property and values according to step2 settings.

step4. Run tct , input ems url, Cilck on the url on configure parel, finish configure.

step5. Stop tibco host.
~/AMXEJBBTTEST/data/tibcohost/Admin-amxadmin-instanceOne/host/bin$ ./tibcohost stop -wait true
tibcohost spawn (daemon)
tibochost start (blocking)
you can use ps uxf to verify the process stopped.

NOTE: amsg3.0.0 above installation need hibernate assemblies, if download speed is too slow,
add assembly path to silent install file
/var/share/TIBCO/AMX/assembly_tibco_com_tibco_tpcl_org_hibernate_feature_3.2.400.001.zip

NOTE: After every installation, include main product and its dependency, you must remove
TIBCO_HOME dir, ./InstallShield,.TIBCO and .TIBCOEnvInfo

NOTE: If installation failed. go to check log at .TIBCO

NOTE: InstallShield and .TIBCOEnvInfo both have installation info. If any products once installed,
you can't install again in silent mode, but can reinstall in GUI mode.

NOTE: amsg silent install profile just remain Administration, so does ejbbt silent install profile.

[b]How to install BWSE?[/b]

step1. Install rv
Prior to using the TIBCO Rendezvous - The Information Bus(tm) software, make sure that /home/yangxm/install/tibrv/8.3/bin is in your path. You should also ensure that /home/yangxm/install/tibrv/8.3/lib is in your LD_LIBRARY_PATH.

RV post Install
Prior to using the TIBCO Rendezvous - The Information Bus(tm) software, make sure that /home/yangxm/remoteHost/tibrv/8.3/bin is in your path. You should also ensure that /home/yangxm/remoteHost/tibrv/8.3/lib is in your LD_LIBRARY_PATH.

step2. Install bwse admin, select same tibco home of rv.
TIBCO ActiveMatrix BusinessWorks Service Engine - UNIX Post Installation Steps
Perform the following steps:
Open the TIBCO_HOME/tibcohost/3.1/scripts/node_classpath_3.1.2.tra file.
For tibco.env.PATH, add the TIBCO_HOME/tibrv/8.3/bin path as follows:
tibco.env.PATH=TIBCO_HOME/tibrv/8.3/bin;TIBCO_HOME/tibcojre/...
Based on your platform, add the TIBCO_HOME/tibrv/8.3/lib path to the environment variables:
tibco.env.LD_LIBRARY_PATH
tibco.env.SHLIB_PATH
tibco.env.LIBPATH
For UNIX 64 bit platform, add the path TIBCO_HOME/tibrv/8.3/lib/64:TIBCO_HOME/tibrv/8.3/lib to the above environment variables.

step3. configure EMS and admin server to finish.
NOTE: If you ran into issue, you just need to remove /home/yangxm/TH2/data/tibcohost, then run and -f build.xml under ~/TH2/data/tct/tibcohost/2011-10-17-10-45-07/scripts

step4. go to http://silver-1:8120/amxadministrator/loginForm.jsp

NOTE: In the case you setup a second Runtime Host without RV and BWSE, when you run TCT to create TIBCO Host Instance, make sure you add hostname and ip mapping to admin /etc/hosts file. Otherwise, you may run into JMX connection issue.

NOTE: deploy log is at log /home/yangxm/TIBCO_HOME/data/tibcohost/Admin-amxadmin-instanceOne/nodes/SystemNode/logs/SystemNode.

[b]How to install BWSE in SilverFabric?[/b]

Prepare the work directory, but not configure them.

step0. Extract distribution of amsg

step1. You must ensure all the executables at /home/yangxm/install/tibrv/8.3/bin are accessible

step2. Run genMachineMode

ant -f -f /home/yangxm/sf/DSEngine/work/silver-1-1/tibcoamx/tools/scripts/sync-machine-model.xml -Dcomponent.store.name=shared -Dcomponent.store.version=1.0.0 -Dtibco.home=/home/yangxm/sf/DSEngine/work/silver-1-1/tibcoamx

step3. Run Post-Install

UNIX Post Installation Steps
Perform the following steps:
Open the TIBCO_HOME/tibcohost/3.1/scripts/node_classpath_3.1.2.tra file.
For tibco.env.PATH, add the TIBCO_HOME/tibrv/8.3/bin path as follows:
tibco.env.PATH=TIBCO_HOME/tibrv/8.3/bin;TIBCO_HOME/tibcojre/...
Based on your platform, add the TIBCO_HOME/tibrv/8.3/lib path to the environment variables:
tibco.env.LD_LIBRARY_PATH
tibco.env.SHLIB_PATH
tibco.env.LIBPATH
For UNIX 64 bit platform, add the path TIBCO_HOME/tibrv/8.3/lib/64:TIBCO_HOME/tibrv/8.3/lib to the above environment variables.

step4. Copy tct to tibco_home root and run it. Select a target <working dir>/data, update administrator server port to basePort+engineInstanceNum

or

java -cp /home/yangxm/sf/DSEngine/work/silver-1-1/tibcoamx/tools/lib/antpackage.jar org.apache.tools.ant.launch.Launcher -f /home/yangxm/sf/DSEngine/work/silver-1-1/tibcoamx/tibcohost/3.1/scripts/post-install.xml -Dtibco.home.esc=/home/yangxm/sf/DSEngine/work/silver-1-1/tibcoamx -Dtibco.wrapper.extension= -Dtibco.jvm.lib.server.esc=/home/yangxm/sf/DSEngine/work/silver-1-1/tibcoamx/tibcojre64/1.6.0/lib/amd64/server/libjvm.so -Dtibco.java.home.esc=/home/yangxm/sf/DSEngine/work/silver-1-1/tibcoamx/tibcojre64/1.6.0/ -Dtibco.home=/home/yangxm/sf/DSEngine/work/silver-1-1/tibcoamx -Dtibco.component.store=shared/1.0.0

You can see new plugin added to

/tibcohost/RemoteHost/tools/machinemodel/machine.xmi

step5. Start executable tibcohost in data dir.

step6. Visit http://silver-1:8080/amxadmin/amxadministrator/admin.jsp

[b]How to deploy DAA?[/b]

step1. Click on Shared Objects, New a Resource Template, input name and port. Done.
step2. Click on the template you create and then New Resource Instances. Select an available node, save and install.
step3. Click on Infrastructure, select host, then select Resource Instance for special type, make sure it's installed successfully.
step4. New an application, input a name, upload DAA, select node, next to finish with default setting.
step5. Click on Properties of application, select the template you create in step2 for Property Value.

If you install another runtime host in same machine, you must assign another tibco home and home name.

step1. After you install the second runtime host, you need to start tct to configure. Input this host name and admin machine name.
step2. Login admin, navigate to Infrastructure -> Hosts, ensure your Runtime host appear.
step3. New a node for your new host in Infrastructure ->Nodes. Install and start this Node at last.

NOTE: If you directly start application successfully without startting this Node, you can't start node successfully
, you must stop the running application first. then start node.

step3. In Shared Ojbects, New a resource template, then New a Resource Instance Add available nodes then click on Save and install. Or go to Infrastructure, click on Resouce Instance tab, click on All Instances, install instance.
step4. Stop a running app in Application, edit its Properties, update property value to the new created resource template,save.
step5. Deploy this application and start.

NOTE, If your application depends on other feature, such as BWSE,
You MUST deploy BWSE to the same node that your application is to be deployed. Go to Applicatoin, click on
TIBCO ActiveMatrix BusinessWorks Service Engine, click on tab Distribution, add Available node to Selected node.

NOTE, If your application depends on RV, after deploy daa, start a RV listerner, and RV sender,
start rv daemon on 192.168.71.4 first,
yangxm@silver-1:~/tibco/tibrv/8.3/bin$ ./rvd64
then start rv lister and client
[spsap@RHEL5 bin]$ ./tibrvlisten -service 7500 -daemon 192.168.71.4:7500 test hello
[spsap@RHEL5 bin]$ ./tibrvsend -service 7500 -daemon 192.168.71.4:7500 test hello

------------------- Code Summary ----------------

Distribution Install and post install
D:\cloudteam\SFAMX\amxcontainerdev\src\main\java\com\tibco\sf\container\amx\DistInstallAction.java
Admin and tibcohost container each has a FullLifeCycleMode
D:\cloudteam\SFAMX\amxcontainerdev\src\main\java\com\tibco\sf\container\amx\th\FullCycleMode.java
D:\cloudteam\SFAMX\amxcontainerdev\src\main\java\com\tibco\sf\container\amx\admin\FullCycleMode.java
Main entry
D:\cloudteam\SFAMX\amxcontainerdev\src\main\java\com\tibco\sf\container\amx\th\AmxTibcohostContainer.java
D:\cloudteam\SFAMX\amxcontainerdev\src\main\java\com\tibco\sf\container\amx\AbstractAmxContainer.java


[b]How to install EMS in Silent mode?[/b]

step1. Extract the TIBCO Enterprise Message Service product archive TIB_ems_5.1.5_linux26gl23_x86.tar to a
temporary directory.

step2. Edit TIBCOUniversalInstaller.silent, update following item to your own dir.
<entry key="installationRoot">/home/yangxm/EMS</entry>
<entry key="configDirectoryRoot">/home/yangxm/tibco_cf</entry>

step3. If you are using the TIBCOUniversalInstaller.silent file (rather than a copy), you need not supply the file name and can use this command line:
./TIBCOUniversalInstaller.bin -silent
If you want to redirect silent install log to a file, use -is:log <file_path/file>
step4. Start ems server.

NOTE1: If you're using 64bit os, start with tibemsd64, on 32bit os, start with tibemsd. If you start
with wrong executive file, you'll see No such file or directory.
NOTE2:All programme client start in dynamically way, so you must specify config file when you start ems server. In static way, no need to specifyconfig file.
yangxm@zhangx-dt-1:~/EMS/ems/5.1/bin$ ./tibemsd64 -config "/home/yangxm/ems/emsConfig/tibco/cfgmgmt/ems/data/tibemsd.conf"

[b]How to use TIBCO SF for AMX?[/b]

step 1. deploy all gridlibs
SilverFabric_amsg3x_3.1.3_linux24gl23_x86_64_distribution_gridlib.zip
SilverFabric_tibcoamxadmin_component.type_1.0.0.zip
SilverFabric_tibcoamxadmin_container_1.0.0_gridlib.zip
SilverFabric_tibcoamxruntime_component.type_1.0.0.zip
SilverFabric_tibcoamxruntime_container_1.0.0_gridlib.zip

step 2. create two components, amx runtime and amx admin
amx runtime depends on admin

step3. update EMS configuration, if non-ssl, just modify url is ok.

1.check SSL Enabled
2. Set EMS server
ssl://192.168.67.39:7243, username: admin, password blank
3. Upload truststore
you can find the ems server certificate at http://svn.tibco.com:8008/cloud/trunk/Silver/SFAMX/CLI/my_ems_cert.pem. and if you don't want your own truststore, you can use this one, http://svn.tibco.com:8008/cloud/trunk/Silver/SFAMX/CLI/keystore.trust, which already has the ems server public key imported.

NOTE 1: If you ever upload a trust.keystore to broker, and didn't remove it in none-SSL ems mode.
09/22/11 15:04:21.067 INFO: [ProcessWrapper] [STDOUT] create-dir-structure:
09/22/11 15:04:21.167 INFO: [ProcessWrapper] [STDOUT] [copy] Copying 117 files to /home/yangxm/DSEngine/work/zhangx-dt-1-1/tibcoConfigHome/admin/amxadmin/samples
09/22/11 15:04:21.209 INFO: [ProcessWrapper] [STDOUT] [copy] Copying 1 file to /home/yangxm/DSEngine/work/zhangx-dt-1-1/tibcoConfigHome/admin/amxadmin/samples
09/22/11 15:04:21.210 INFO: [ProcessWrapper] [STDOUT] [copy] Copying 1 file to /home/yangxm/DSEngine/work/zhangx-dt-1-1/tibcoConfigHome/admin/amxadmin/private/instanceOne
09/22/11 15:04:26.287 INFO: [ProcessWrapper] [STDOUT] [CreateCLITrustStoreTask] ERROR - Error in creating the truststore for Admin CLIjava.lang.NullPointerException: invalid null input
09/22/11 15:04:26.326 INFO: [ProcessWrapper] [STDERR]
09/22/11 15:04:26.327 INFO: [ProcessWrapper] [STDERR] BUILD FAILED
09/22/11 15:04:26.327 INFO: [ProcessWrapper] [STDERR] /home/yangxm/DSEngine/work/zhangx-dt-1-1/scripts/tct-admin-headless/build.xml:12: The following error occurred while executing this line:
09/22/11 15:04:26.327 INFO: [ProcessWrapper] [STDERR] /home/yangxm/DSEngine/work/zhangx-dt-1-1/tibcoamx/administrator/3.1/scripts/instance-mgmt.xml:129: Failed on error
09/22/11 15:04:26.327 INFO: [ProcessWrapper] [STDERR]
09/22/11 15:04:26.327 INFO: [ProcessWrapper] [STDERR] Total time: 8 seconds

NOTE 2: If you didn't start EMS dynamically(with -config "*.conf"), you'll run into below issue during start AMX admin component
09/22/11 16:20:10.086 INFO: [ProcessWrapper] [STDOUT] start:
09/22/11 16:20:10.453 INFO: [ProcessWrapper] [STDOUT] [hpa.tibcohost.Start] Starting TIBCO Host.
09/22/11 16:20:10.557 INFO: [ProcessWrapper] [STDOUT] [hpa.tibcohost.Start] Started TIBCO Host.
09/22/11 16:20:15.072 INFO: [ProcessWrapper] [STDOUT] [hpa.tibcohost.Start] TIBCO-AMX-HPA-CLI-000141: The tibcohost process failed to start. OS exit code 232. Try calling the tibcohost executable directly with the argument --debug to collect more information. Verify the location and accessibility of the JVM library in /home/yangxm/DSEngine/work/zhangx-dt-1-1/tibcoamx/tibcohost/3.1/scripts/tibcohost_classpath_3.1.3.tra.


[b]How to use TIBCO SF BW?[/b]

step 1. Open the physical media or download the package. Sample: TIB_sfbw_1.0.0_win_x86.zip

step 2. Extract the contents of the package to a temporary directory.

step 3. Navigate to the temporary directory.

step 4. Run TIBCOUniversalInstaller to open TIBCO Universal Installer, after installation,
all bw gridlibs are extracted to a dir named gridlibs. You can skip these steps, straight
use the existing gridlibs at \\atlas\TIBCO\TIBCO BW Container\gridlibs

step 5. Copy the all distributions and containers ZIP files to the following directory:
cp *.zip <SILVERFABRIC_HOME>/webapps/livecluster/deploy/resources/gridlib/

step 6. Create New TIBCO Administrator component and BusinessWorks component at Application -> Components ->"Global Actions" dropdown list

step 7. Edit administrator component and then add "ADMINMACHINE" to value of DOMAIN_RV_DAEMON and DOMAIN_HAWK_DAEMON, add your own domain name.(It means modify DOMAIN_RV_DAEMON,DOMAIN_HAWK_DAEMON, and TIBCO_DOMAIN_NAME three runtime variables value as below)

DOMAIN_RV_DAEMON (from administrator-qapcx02-0) Environment tcp:ADMINMACHINE:7500
DOMAIN_HAWK_DAEMON (from administrator-qapcx02-0) Environment tcp:ADMINMACHINE:7474
TIBCO_DOMAIN_NAME (from administrator-qapcx02-0) Environment yourDomain

step 8. Click on "Add/remove archive files" to upload \\atlas\TIBCO\TIBCO BW Container\processOrder.zip in application component wizard of BW component.

step 9. Start application to running status, visit

URL:

If your machine can be only accessed via engine ip, you need directly visit http://<engineIP>: <httpPort+instanceNumber>
If your machine can be access via broker, you must use url as below:

http://<broker IP>:<Port>/<DomainName>/administrator/servlet/tibco_administrator
sample:
http://qa52:8080/myDomain/administrator/servlet/tibco_administrator

to visit the prossOrder app you upload, engine ip is the engine running bw component.

http://<brokerIP>:8080/<DomainName>/<bwComponentName>/?order=
sample:
http://192.168.128.136:8080/myDomain/bwCom/?order=122444

#http://<engineIP>:<httpPort>/<DomainName>/<bwComponentName>/?order=
http://<engineIP>:<httpPort+instanceNumber>/?order=12245
sample:
engine instance 0: http://192.168.128.67:8200/?order=122444
engine instance 1: http://192.168.129.36:8201/?order=122444

TRA home:
/opt/qa/engine/stress0/DSEngine/work/qa82-1/tibcobw/tra/5.7/bin
useful tools: AppMange -start/stop to start or stop application

App home:
/opt/qa/engine/stress0/DSEngine/work/qa82-1/fabric/tibcobw/procs/6233160 domaindata/tra/myDomain/application/ProcessOrder/

Tomcat bin:
/qa82-0/tibcobw/administrator/5.7/tomca/qa82-1/tibcobw/tpcl/5.7/tomcat


[qa@qa82 bin]$ ps -aef|grep bwengine
stress0 31517 1 1 06:58 ? 00:00:26 /opt/qa/engine/stress0/DSEngine/work/qa82-1/tibcobw/bw/5.9/bin/bwengine --pid --run --propFile /opt/qa/engine/stress0/DSEngine/work/qa82-1/domaindata/tra/myDomain/application/ProcessOrder/ProcessOrder-Process_Archive.tra --innerProcess

bw component:
07/21/11 06:41:26.966 INFO: [ProcessWrapper] Executing: /opt/qa/engine/stress0/DSEngine/work/qa82-0/tibcobw/tra/5.7/bin/domainutilitycmd,-cmdFile,/opt/qa/engine/stress0/DSEngine/work/qa82-0/domaindata/AddMachine.xml

bw compoennt:qa82-1/tibcobw/tra/5.7/ template/domainutility
admin component: qa82-1/domaindata/tra/myDomain/AuthorizationDomain.properties


[b]How to Debug Engine?[/b]

step1. Set Debug Start Port, 9100 in Engine configuration
step2. Select Run/Debug Configuration, set host and port, if you have four instances, set separated listenning port for every instance, 9100, 9101, 9102, 9103, start to listen all ports.
step3. Select target module souce in dropdown list for every attached client.
step4. Start application and wait to track running code.


---------------------------
Lifecyle method
---------------------------
0. Work Directory Preparation. The prepareWorkDirectory() is called. to delete work and archive directories that may exist from a previous failed activation, copy all first-level Grid Library dependencies to the work directory, and install the content files to


1. doInit() methond's implementations can therefore use this method for initial setup of required directory structures. OR To set additional variables to be used at runtime, you need to get RuntimeContextVariable and FeatureInfo from specified in configure.xml, then add it to List<RuntimeContextVariable>.

2. Content Configuration
The Container files are configured , as specified in the configure.xml file, and the configureContainer() method is called.

3. Container Start
The doStart() method is called for the actual Container startup, remember to solve portsConflict.

4.Component Installation
The doInstall() method is called to install the Application Component into the Container, followed by the activate() method in the Domain class.

6.The Container is activated and the Component is running.

7.Component Uninstallation
The deactivate() method of the Domain class is called, followed by the doUninstall() method of the Container is called to uninstall the Application Component.

8.Container Shutdown
The doShutdown() method is called; it is responsible for shutting down the Container.

9.Cleanup
The cleanup() method is called and deletes the work directory. Subclasses can
optionally override this method to perform any container-specific cleanup, such
as deletion of runtime files or directories.

Container.xml
The container.xml file contains the definition of the runtime JAR classes, and their properties. Essentially, this file represents the Container persisted in XML. The Container Wizard in the Silver Fabric Administration Tool displays and modifies the container.xml.When this file is read by the Engine, the Container object is constructed and configured.

------------------------------------------------------------------------------
<property name="name" value="Tomcat Container"/>
<property name="distributionVersion" value="5.6"/>
and container
<grid-library-name>tomcat6-distribution</grid-library-name>
<grid-library-version>5.6</grid-library-version>
and distribution
<grid-library-name>tomcat6-distribution</grid-library-name>
<grid-library-version>5.6</grid-library-version>
must match
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值