I moved the code to the java class that invoked by the JSP page.
The implementation is as follows.
BrokerClient.java
===============================
public void publish(String topic, String message) throws AxisFault,
XMLStreamException {
log.debug("published element to " + topic);
StAXOMBuilder builder = new StAXOMBuilder(new
ByteArrayInputStream(message.getBytes()));
OMElement omElementMessage = builder.getDocumentElement();
EventBrokerServiceStub service = new
EventBrokerServiceStub(configurationContext, brokerUrl + "/publish/" +
topic);
configureCookie(service._getServiceClient());
ServiceClient serviceClient = service._getServiceClient();
OMElement header = fac.createOMElement(new QName(TOPIC_HEADER_NS,
TOPIC_HEADER_NAME));
header.setText(topic);
serviceClient.addHeader(header);
serviceClient.getOptions().setTo(new EndpointReference(brokerUrl +
"/publish"));
//serviceClient.getOptions().setTo(new
EndpointReference(brokerUrl));
serviceClient.getOptions().setAction("urn:publish");
serviceClient.sendRobust(omElementMessage);
}
The relevant JSP page code
===============================
<%@ page import="org.apache.axiom.om.OMElement" %>
<%@ page import="org.apache.axiom.om.impl.builder.StAXOMBuilder" %>
<%@ page import="org.wso2.carbon.event.client.broker.BrokerClient" %>
<%@ page import="org.wso2.carbon.event.ui.UIUtils" %>
<%@ page import="java.io.ByteArrayInputStream" %>
<%
BrokerClient brokerClient = UIUtils.getBrokerClient(config, session,
request);
String topic = request.getParameter("topic");
String textMsg = request.getParameter("xmlMessage");
session.setAttribute("errorTopic", topic);
session.setAttribute("xmlMessage", textMsg);
String messageToBePrinted = null;
try {
brokerClient.publish(topic, textMsg);
} catch (Exception e) {
messageToBePrinted = "Error: while publishing the message " +
e.getMessage();
}
if (messageToBePrinted == null) {
messageToBePrinted = "Successfully published the message to the
topic :" + topic;
}
%>
<%=messageToBePrinted%>
But I am getting the following error now.
=============== Error =================
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 16 in the jsp file:
/topics/try_it_out_invoke_ajaxprocessor.jsp
The type javax.xml.stream.XMLStreamException cannot be resolved. It is
indirectly referenced from required .class files
13: session.setAttribute("xmlMessage", textMsg);
14: String messageToBePrinted = null;
15: try {
16: brokerClient.publish(topic, textMsg);
17: } catch (Exception e) {
18: messageToBePrinted = "Error: while publishing the message
" + e.getMessage();
19: }
An error occurred at line: 16 in the jsp file:
/topics/try_it_out_invoke_ajaxprocessor.jsp
The method publish(String, String) from the type BrokerClient refers to the
missing type XMLStreamException
13: session.setAttribute("xmlMessage", textMsg);
14: String messageToBePrinted = null;
15: try {
16: brokerClient.publish(topic, textMsg);
17: } catch (Exception e) {
18: messageToBePrinted = "Error: while publishing the message
" + e.getMessage();
19: }
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.wso2.carbon.ui.JspServlet.service(JspServlet.java:155)
org.wso2.carbon.ui.TilesJspServlet.service(TilesJspServlet.java:80)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:37)
org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)
Any help on this would be appreciated.
Hemika Kodikara
Software Engineer
WSO2 Inc.
lean . enterprise . middleware
http://wso2.com
Mobile : +94777688882
On Mon, Feb 9, 2015 at 5:23 PM, Hemika Kodikara <[email protected]> wrote:
> Hi KasunG,
>
> I noticed that you replied to this thread[1] sometime back. May I know
> what was the fix ? I may be having the same issue.
>
> [1] - http://mail.wso2.org/mailarchive/dev/2014-April/030470.html
>
> Thanks,
> Hemika
>
> Hemika Kodikara
> Software Engineer
> WSO2 Inc.
> lean . enterprise . middleware
> http://wso2.com
>
> Mobile : +94777688882
>
> On Mon, Feb 9, 2015 at 3:37 PM, Hemika Kodikara <[email protected]> wrote:
>
>> Hi Lakshman,
>>
>> I tried adding the following dependency. But I am still getting the error.
>>
>> <dependency>
>> <groupId>javax.xml.stream</groupId>
>> <artifactId>stax-api</artifactId>
>> <version>1.0-2</version>
>> </dependency>
>>
>> FYI, following is the complete error stack.
>>
>> org.apache.jasper.JasperException: Unable to compile class for JSP:
>> An error occurred at line: 18 in the jsp file:
>> /topics/try_it_out_invoke_ajaxprocessor.jsp
>> The type javax.xml.stream.XMLStreamException cannot be resolved. It is
>> indirectly referenced from required .class files
>> 15: String messageToBePrinted = null;
>> 16: StAXOMBuilder builder = null;
>> 17: try {
>> 18: builder = new StAXOMBuilder(new
>> ByteArrayInputStream(textMsg.getBytes()));
>> 19: message = builder.getDocumentElement();
>> 20: if (message != null) {
>> 21: brokerClient.publish(topic, message);
>>
>>
>> An error occurred at line: 18 in the jsp file:
>> /topics/try_it_out_invoke_ajaxprocessor.jsp
>> The type javax.xml.stream.XMLStreamReader cannot be resolved. It is
>> indirectly referenced from required .class files
>> 15: String messageToBePrinted = null;
>> 16: StAXOMBuilder builder = null;
>> 17: try {
>> 18: builder = new StAXOMBuilder(new
>> ByteArrayInputStream(textMsg.getBytes()));
>> 19: message = builder.getDocumentElement();
>> 20: if (message != null) {
>> 21: brokerClient.publish(topic, message);
>>
>>
>> An error occurred at line: 18 in the jsp file:
>> /topics/try_it_out_invoke_ajaxprocessor.jsp
>> The constructor StAXOMBuilder(InputStream) refers to the missing type
>> XMLStreamException
>> 15: String messageToBePrinted = null;
>> 16: StAXOMBuilder builder = null;
>> 17: try {
>> 18: builder = new StAXOMBuilder(new
>> ByteArrayInputStream(textMsg.getBytes()));
>> 19: message = builder.getDocumentElement();
>> 20: if (message != null) {
>> 21: brokerClient.publish(topic, message);
>>
>>
>> Stacktrace:
>>
>> org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
>>
>> org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
>> org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468)
>> org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
>> org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
>> org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
>>
>> org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
>>
>> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
>> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
>> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
>> javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>> org.wso2.carbon.ui.JspServlet.service(JspServlet.java:155)
>> org.wso2.carbon.ui.TilesJspServlet.service(TilesJspServlet.java:80)
>> javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>
>> org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:37)
>>
>> org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
>>
>> org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
>>
>> org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
>> javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>
>> org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
>>
>> org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)
>>
>> Hemika Kodikara
>> Software Engineer
>> WSO2 Inc.
>> lean . enterprise . middleware
>> http://wso2.com
>>
>> Mobile : +94777688882
>>
>> On Mon, Feb 9, 2015 at 2:42 PM, Lakshman Udayakantha <[email protected]>
>> wrote:
>>
>>> Hi Hemika,
>>>
>>> is jsr173_api.jar is in your classpath? according to [1] thread, he has
>>> solved the problem by adding jsr173_api.jar to classpath.
>>>
>>> [1] http://www.coderanch.com/t/378351/java/java/XML-Beans-type-javax-xml
>>>
>>> Thanks
>>>
>>> On Mon, Feb 9, 2015 at 2:24 PM, Hemika Kodikara <[email protected]> wrote:
>>>
>>>> Hi All,
>>>>
>>>> I have the following server code on a JSP page which is used to publish
>>>> a message in MB.
>>>>
>>>> BrokerClient brokerClient = UIUtils.getBrokerClient(config, session,
>>>> request);
>>>> String topic = request.getParameter("topic");
>>>> String textMsg = request.getParameter("xmlMessage");
>>>> session.setAttribute("errorTopic", topic);
>>>> session.setAttribute("xmlMessage", textMsg);
>>>> OMElement message;
>>>> String messageToBePrinted = null;
>>>> StAXOMBuilder builder = null;
>>>> try {
>>>> builder = new StAXOMBuilder(new
>>>> ByteArrayInputStream(textMsg.getBytes()));
>>>> message = builder.getDocumentElement();
>>>> if (message != null) {
>>>> brokerClient.publish(topic, message);
>>>> } else {
>>>> messageToBePrinted = "Error: Failed to get document element
>>>> from message " + textMsg;
>>>> }
>>>> } catch (Exception e) {
>>>> messageToBePrinted = "Error: while publishing the message " +
>>>> e.getMessage();
>>>> }
>>>>
>>>> if (messageToBePrinted == null) {
>>>> messageToBePrinted = "Successfully published the message to the
>>>> topic :" + topic;
>>>> }
>>>>
>>>>
>>>> But I am getting an error when executing it.
>>>>
>>>> The type javax.xml.stream.XMLStreamReader cannot be resolved. It is
>>>> indirectly referenced from required .class files
>>>>
>>>>
>>>> The error is coming from the following line.
>>>>
>>>> builder = new StAXOMBuilder(new
>>>> ByteArrayInputStream(textMsg.getBytes()));
>>>>
>>>>
>>>> I saw an earlier thread asking the same question, but unable to get a
>>>> fix from it [1].
>>>>
>>>> Any idea why it is coming on a JSP page ?
>>>>
>>>> [1] - http://mail.wso2.org/mailarchive/dev/2014-April/030470.html
>>>>
>>>> Hemika Kodikara
>>>> Software Engineer
>>>> WSO2 Inc.
>>>> lean . enterprise . middleware
>>>> http://wso2.com
>>>>
>>>> Mobile : +94777688882
>>>>
>>>> _______________________________________________
>>>> Dev mailing list
>>>> [email protected]
>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>
>>>>
>>>
>>>
>>> --
>>> Lakshman Udayakantha
>>> WSO2 Inc. www.wso2.com
>>> lean.enterprise.middleware
>>> Mobile: *0711241005*
>>>
>>>
>>
>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev