<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Bytecode transformation of an EJB results in a java.lang.VerifyError
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/simonboggild">simonboggild</a> in <i>EJB3</i> - <a href="https://community.jboss.org/message/783819#783819">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Hi,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I've previously posted on the Byteman forum in connection with not being able to use Byteman to transform an EJB. That post can be read here: <a class="" href="https://community.jboss.org/thread/215034?tstart=0">https://community.jboss.org/thread/215034?tstart=0</a></p><p>The pull for using Byteman in our setup is to have the ability to inject code appropriately during integration tests, to simulate different error scenarios when interacting with external systems.</p><p>We run our integration tests using Arquillian and have then tried to introduce Byteman as well. Using Byteman works well in our setup on regular POJO's, however, when trying to use Byteman to transform an EJB, we see the following exception being thrown from the application server when running the integration test (error thrown right after Byteman transforms the EJB):</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>SEVERE: java.lang.VerifyError</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.instrument.InstrumentationImpl.retransformClasses0(Native Method)</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:124)</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.byteman.agent.Retransformer.installScript(Retransformer.java:136)</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.byteman.agent.TransformListener.handleScripts(TransformListener.java:337)</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.byteman.agent.TransformListener.loadScripts(TransformListener.java:260)</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.byteman.agent.TransformListener.handleConnection(TransformListener.java:213)</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.byteman.agent.TransformListener.run(TransformListener.java:146)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Now, the theory of what goes wrong is (see Andrew Dinns answer in the post mentioned above), that the changes Byteman makes during its transformation of the EJB invaldiate some assumptions about the layout of the bytecode that the EJB code depends upon.</p><p>To take this matter further it's necessary to get some more insight in the nature of an EJB and what could be the reason why it's not possible to use a tool such as Byteman to do a bytecode transformation of the EJB without leaving it in an incosistent state.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Any insights/comments/solutions highly appreciated.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Thanks.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Regards,</p><p>Simon</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/783819#783819">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in EJB3 at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2029">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>