mirror of https://github.com/alibaba/arthas.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
11 KiB
JavaScript
47 lines
11 KiB
JavaScript
import{_ as o,o as l,c as i,a as n,b as e,e as a,d as t,r as p}from"./app.391b0e4e.js";const r={},c=n("h1",{id:"ognl",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#ognl","aria-hidden":"true"},"#"),a(" ognl")],-1),u={href:"https://arthas.aliyun.com/doc/arthas-tutorials?language=en&id=command-ognl",target:"_blank",rel:"noopener noreferrer"},d=n("code",null,"ognl",-1),g=a(" online tutorial"),v=t('<div class="custom-container tip"><p class="custom-container-title">TIP</p><p>Execute ognl expression.</p></div><p>Since 3.0.5.</p><h3 id="parameters" tabindex="-1"><a class="header-anchor" href="#parameters" aria-hidden="true">#</a> Parameters</h3><table><thead><tr><th style="text-align:right;">Name</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;"><em>express</em></td><td style="text-align:left;">expression to be executed</td></tr><tr><td style="text-align:right;"><code>[c:]</code></td><td style="text-align:left;">The hashcode of the ClassLoader that executes the expression, default ClassLoader is SystemClassLoader.</td></tr><tr><td style="text-align:right;"><code>[classLoaderClass:]</code></td><td style="text-align:left;">The class name of the ClassLoader that executes the expression.</td></tr><tr><td style="text-align:right;">[x]</td><td style="text-align:left;">Expand level of object (1 by default).</td></tr></tbody></table><h3 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h3>',5),k={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},b=a("Special usages"),m={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},h=a("OGNL official guide"),f=t(`<p>Call static method:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ ognl <span class="token string">'@java.lang.System@out.println("hello")'</span>
|
|
null
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>Get static field:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ ognl <span class="token string">'@demo.MathGame@random'</span>
|
|
@Random<span class="token punctuation">[</span>
|
|
<span class="token assign-left variable">serialVersionUID</span><span class="token operator">=</span>@Long<span class="token punctuation">[</span><span class="token number">3905348978240129619</span><span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">seed</span><span class="token operator">=</span>@AtomicLong<span class="token punctuation">[</span><span class="token number">125451474443703</span><span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">multiplier</span><span class="token operator">=</span>@Long<span class="token punctuation">[</span><span class="token number">25214903917</span><span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">addend</span><span class="token operator">=</span>@Long<span class="token punctuation">[</span><span class="token number">11</span><span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">mask</span><span class="token operator">=</span>@Long<span class="token punctuation">[</span><span class="token number">281474976710655</span><span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">DOUBLE_UNIT</span><span class="token operator">=</span>@Double<span class="token punctuation">[</span><span class="token number">1</span>.1102230246251565E-16<span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">BadBound</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>bound must be positive<span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">BadRange</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>bound must be greater than origin<span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">BadSize</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>size must be non-negative<span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">seedUniquifier</span><span class="token operator">=</span>@AtomicLong<span class="token punctuation">[</span>-3282039941672302964<span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">nextNextGaussian</span><span class="token operator">=</span>@Double<span class="token punctuation">[</span><span class="token number">0.0</span><span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">haveNextNextGaussian</span><span class="token operator">=</span>@Boolean<span class="token punctuation">[</span>false<span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">serialPersistentFields</span><span class="token operator">=</span>@ObjectStreamField<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">[</span>isEmpty<span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">size</span><span class="token operator">=</span><span class="token number">3</span><span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">unsafe</span><span class="token operator">=</span>@Unsafe<span class="token punctuation">[</span>sun.misc.Unsafe@28ea5898<span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">seedOffset</span><span class="token operator">=</span>@Long<span class="token punctuation">[</span><span class="token number">24</span><span class="token punctuation">]</span>,
|
|
<span class="token punctuation">]</span>
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Specify ClassLoader by hashcode:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader -t
|
|
+-BootstrapClassLoader
|
|
+-jdk.internal.loader.ClassLoaders<span class="token variable">$PlatformClassLoader</span>@301ec38b
|
|
+-com.taobao.arthas.agent.ArthasClassloader@472067c7
|
|
+-jdk.internal.loader.ClassLoaders<span class="token variable">$AppClassLoader</span>@4b85612c
|
|
+-org.springframework.boot.loader.LaunchedURLClassLoader@7f9a81e8
|
|
|
|
$ ognl -c 7f9a81e8 @org.springframework.boot.SpringApplication@logger
|
|
@Slf4jLocationAwareLog<span class="token punctuation">[</span>
|
|
<span class="token assign-left variable">FQCN</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>org.apache.commons.logging.LogAdapter<span class="token variable">$Slf4jLocationAwareLog</span><span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">name</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>org.springframework.boot.SpringApplication<span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">logger</span><span class="token operator">=</span>@Logger<span class="token punctuation">[</span>Logger<span class="token punctuation">[</span>org.springframework.boot.SpringApplication<span class="token punctuation">]</span><span class="token punctuation">]</span>,
|
|
<span class="token punctuation">]</span>
|
|
$
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader.</p><p>For ClassLoader with only unique instance, it can be specified by class name, which is more convenient to use:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader @org.springframework.boot.SpringApplication@logger
|
|
@Slf4jLocationAwareLog<span class="token punctuation">[</span>
|
|
<span class="token assign-left variable">FQCN</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>org.apache.commons.logging.LogAdapter<span class="token variable">$Slf4jLocationAwareLog</span><span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">name</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>org.springframework.boot.SpringApplication<span class="token punctuation">]</span>,
|
|
<span class="token assign-left variable">logger</span><span class="token operator">=</span>@Logger<span class="token punctuation">[</span>Logger<span class="token punctuation">[</span>org.springframework.boot.SpringApplication<span class="token punctuation">]</span><span class="token punctuation">]</span>,
|
|
<span class="token punctuation">]</span>
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Execute a multi-line expression, and return a list:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ ognl <span class="token string">'#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'</span>
|
|
@ArrayList<span class="token punctuation">[</span>
|
|
@String<span class="token punctuation">[</span>/opt/java/8.0.181-zulu/jre<span class="token punctuation">]</span>,
|
|
@String<span class="token punctuation">[</span>OpenJDK Runtime Environment<span class="token punctuation">]</span>,
|
|
<span class="token punctuation">]</span>
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,11);function L(x,_){const s=p("ExternalLinkIcon");return l(),i("div",null,[c,n("p",null,[n("a",u,[d,g,e(s)])]),v,n("ul",null,[n("li",null,[n("a",k,[b,e(s)])]),n("li",null,[n("a",m,[h,e(s)])])]),f])}var y=o(r,[["render",L],["__file","ognl.html.vue"]]);export{y as default};
|