Wsdl requests result in infinite loop response; sometimes
I'm not sure this is the appropriate place to post this question so please redirect me if there is a better place.
We have some web services deployed and after they have been running a while a request for the wsdl will result in the following response.
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://model.ws.acme.com" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsxsdns="http://model.ws.acme.com" xmlns:wsns="http://model.ws.acme.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://model.ws.acme.com" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:complexType><xs:complexType><xs:complexType><xs:complexType><xs:complexType><xs:complexType><xs:complexType><xs:complexType><xs:complexType><xs:complexType><xs:complexType>
where '<xs:complexType>' is repeated without end.
We are using the following: tomcat 5.5, axis2 1.2 and java 1.5.
I thought a request for the wsdl would simply return the file from the file system but I guess I'm wrong. Anyone know what really happens when the wsdl is requested? Any suggested reading? Anyone else ever seen this? Any other advice?
Thanks for your kind assistance
Sad, I see many questions and few answers. Open source is great when it works.
Similar Messages
-
Findforward() results in infinite loop and server exits
I have a dataform which has struts html text field and 3 poplist bound
to database fields. I do a submit on the event onChange in the first poplist and it
will call a custom method in app module, which will setup the VO for populating the second poplist, based on
the data from the first list. In the action class, I override the findforward() to go to
DataAction to execute this custom method. On sucess from DataAction a forward is set to the first page
which display the second poplist. When i run the action from struts-config.xml,
the oc4j server goes on to loop and exits with message "Process exited with exit code 128".
Any ideas why this is happing ?.One or several of the events handled by the page are still present because you keep forwarding between actions.
The onChange event is still hanging around when it is forwarded to the next action and this action may act on it in an unpredictable way.
There is currently code in the ADF framework to insure that an event is not executed by more than one action but in your case you may have your own events. Make sure to act on possible event being forwarded around.
Charles. -
JButton, flashcards and an infinite loop
I'm trying a create a flashcard panel for Japanese kana. I have a class JCWidget that consists of the image of the specific symbol and its name.
I could think of only two ways to create autoadvancing flashcards. Using Thread or Timer. May be there are more, and I would welcome the ideas.
When the start button is pushed, an image and a name should change in a set ammount of seconds and so on, until the stop button is pressed But there is a problem - output is shown only after actionPerformed method is executed completely, resulting in infinite loop.
Code using threads:
public static JPanel addPanel2()
jP2 = new JPanel(new GridLayout(2, 1));
jcw = new JCWidget(arr, isKatakana);
final JLabel letter = jcw.getLetter();
final JLabel text = new JLabel(jcw.getLetterName());
final JButton start = new JButton("Start flashcards");
final JButton stop = new JButton("Stop flashcards");
text.setHorizontalAlignment(JLabel.CENTER);
stop.setEnabled(false);
jP2.add(letter);
jP2.add(start);
jP2.add(text);
jP2.add(stop);
start.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
start.setEnabled(false);
stop.setEnabled(true);
while(stop.isEnabled())
try {jcw.sleep(500);}
catch (InterruptedException exept) {jcw.interrupt();}
jcw = new JCWidget(arr, isKatakana);
letter.setIcon(jcw.getLetter().getIcon());
text.setText(jcw.getLetterName());
stop.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
stop.setEnabled(false);
start.setEnabled(true);
jcw.notify();
return jP2;
}Code using timer:
public static JPanel addPanel2()
jP2 = new JPanel(new GridLayout(2, 1));
jcw = new JCWidget(arr, isKatakana);
final JLabel letter = jcw.getLetter();
final JLabel text = new JLabel(jcw.getLetterName());
final JButton start = new JButton("Start flashcards");
final JButton stop = new JButton("Stop flashcards");
text.setHorizontalAlignment(JLabel.CENTER);
stop.setEnabled(false);
jP2.add(letter);
jP2.add(start);
jP2.add(text);
jP2.add(stop);
final Timer timer = new Timer(1000, new ActionListener()
public void actionPerformed(ActionEvent e)
// while(stop.isEnabled())
letter.setIcon(jcw.getLetter().getIcon());
text.setText(jcw.getLetterName());
start.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
start.setEnabled(false);
stop.setEnabled(true);
timer.start();
stop.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
stop.setEnabled(false);
start.setEnabled(true);
timer.stop();
return jP2;
}When running for a single iteration, everything works perfectly, (although with timer can work only once - after pushing start button for the second time nothing would happen, with threads there is no problem in that.
I tried to use for loop with limited number of iterations, but the output is changed only once - at the end of the loop. And with the while loop, program completely freezes up.
Could someone, please, help?final Timer timer = new Timer(1000, 1000, new MyTimerActionListener());
start.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
start.setEnabled(false);
stop.setEnabled(true);
timer.start();
});To do the timer code better, you might want to construct a new timer each time the start button is pushed. Something like so:
start.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
Timer timer = new Timer(1000, new MyTimerActionListener());
start.setEnabled(false);
stop.setEnabled(true);
timer.start();
}); -
NIO Selector.select() enters a 100% CPU infinite loop on interruption
This issue is only reproducible in Windows.
When a thread is calling Selector.select() and the other thread interrupts the selector thread, Selector.select() enters an infinite loop taking up CPU time. All other JDKs I've tried including IBM 1.5 / 1.6, SUN 1.5 / 1.6 simply returned 0 when its interrupted. I think JRockit needs to behave similarly, without 100% CPU consumption. Here's the test code:
import java.nio.channels.Selector;
public class Main {
public static void main(String[] args) throws Exception {
final Thread mainThread = Thread.currentThread();
final Selector s = Selector.open();
new Thread() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// Ignore.
System.out.println("interrupt()");
mainThread.interrupt();
}.start();
System.out.println("select()");
s.select(5000);
System.out.println("success");
s.close();
Expected result:
select()
interrupt()
success
Actual result:
select()
interrupt()
<stuck with 100% CPU consumption>
Version:
JRMC-3.0.3-1.5.0 - build R27.6.0-50_o-100423-1.5.0_15-20080626-2105-windows-ia32, compiled mode
JRMC-3.0.3-1.6.0 - build R27.6.0-50_o-100423-1.6.0_05-20080626-2105-windows-ia32, compiled modeHi,
This looks like a bug. Please open a support ticket and request a patch if you need a fix asap. If you can wait we will fix this in an upcoming release. Thank you for your help -
Hi all,
we need to accept a wsdl request with out a namespace on the top element in the body but our system keeps rejecting it as its returning null.
the request coming in is
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:syn="https://test.com/SynERP">
<soapenv:Header/>
<soapenv:Body>
<stockReceivedRequest>
<stockReceived>
<dateReceived>2015-02-11</dateReceived>
<timeReceived>17:11:43</timeReceived>
<courier>DHL</courier>
<poNumber>GU12533</poNumber>
<stockDetailReceived>
<stockDetail>
<productCode>test1</productCode>
<altProductCode/>
<productName>test</productName>
<quantity>2</quantity>
</stockDetail>
</stockDetailReceived>
</stockReceived>
</stockReceivedRequest>
</soapenv:Body>
</soapenv:Envelope>
the request we expect is;
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:syn="https://test.com/SynERP">
<soapenv:Header/>
<soapenv:Body>
<syn:stockReceivedRequest>
<stockReceived>
<dateReceived>2015-02-11</dateReceived>
<timeReceived>17:11:43</timeReceived>
<courier>DHL</courier>
<poNumber>GU12533</poNumber>
<stockDetailReceived>
<stockDetail>
<productCode>test1</productCode>
<altProductCode/>
<productName>test</productName>
<quantity>2</quantity>
</stockDetail>
</stockDetailReceived>
</stockReceived>
</syn:stockReceivedRequest>
</soapenv:Body>
</soapenv:Envelope>
the code managing the request is;
[SoapDocumentMethod(Binding = "GoodsReceiptServiceBinding")]
[WebMethod(MessageName = "stockReceivedRequest")]
public stockReceivedResponseType GoodsReceiptService([XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, ElementName = "stockReceived")]stockReceived stockReceived)
// Get raw request body and process it out to the Logger
Stream receiveStream = HttpContext.Current.Request.InputStream;
RequestFactory.RequestIn(receiveStream, "GoodsReceiptService");
SRSServiceLayer srsServiceLayer = new SRSServiceLayer();
if (stockReceived != null)
return srsServiceLayer.StockRecieved(stockReceived);
else
stockReceivedResponseType response = new stockReceivedResponseType();
response.result = Result.ERROR;
response.errorMessages = EventFactory.GetEvent(107);
return response;
I have tried to make the method unqualified but I just get an error when compiling the code out as XmlElement cant be on a deceleration type.
can we either add syn: on to the stockRecievedRequest when it comes in or is there away to just not bother with it?
hope someone can help.
AidanHi we have this;
/// <summary>
/// Stock Recieved
/// </summary>
[DataContract]
public class stockReceived
/// <summary>
/// Gets or sets the date recieved.
/// </summary>
/// <value>The date recieved.</value>
[DataMember(Name = "dateReceived", IsRequired = true, Order = 0)]
[XmlElementAttribute(IsNullable = true, Form = System.Xml.Schema.XmlSchemaForm.Unqualified, ElementName = "dateReceived")]
public string dateRecieved { get; set; }
/// <summary>
/// Gets or sets the time recieved.
/// </summary>
/// <value>The time recieved.</value>
[DataMember(Name = "timeReceived", IsRequired = false, Order = 1)]
[XmlElementAttribute(IsNullable = false, Form = System.Xml.Schema.XmlSchemaForm.Unqualified, ElementName = "timeReceived")]
public string timeRecieved { get; set; }
/// <summary>
/// Gets or sets the courier.
/// </summary>
/// <value>The courier.</value>
[DataMember(Name = "courier", IsRequired = false, Order = 2)]
[XmlElementAttribute(IsNullable = false, Form = System.Xml.Schema.XmlSchemaForm.Unqualified, ElementName = "courier")]
public string courier { get; set; }
/// <summary>
/// Gets or sets the purchase order number.
/// </summary>
/// <value>The purchase order number.</value>
[DataMember(Name = "poNumber", IsRequired = true, Order = 3)]
[XmlElementAttribute(IsNullable = true, Form = System.Xml.Schema.XmlSchemaForm.Unqualified, ElementName = "poNumber")]
public string poNumber { get; set; }
/// <summary>
/// Gets or sets the stock detail.
/// </summary>
/// <value>The stock detail.</value>
[DataMember(Name = "stockDetailReceived", IsRequired = false, Order = 4)]
[System.Xml.Serialization.XmlArrayAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
[XmlArrayItemAttribute("stockDetail", IsNullable = true, Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public stockDetail[] stockDetailReceived { get; set; }
but as you can see by the request we are expecting with the syn:stockReceivedRequest this is done by the web call
[SoapDocumentMethod(Binding = "GoodsReceiptServiceBinding")]
[WebMethod(MessageName = "stockReceivedRequest")]
public stockReceivedResponseType GoodsReceiptService([XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, ElementName = "stockReceived")]stockReceived stockReceived)
// Get raw request body and process it out to the Logger
Stream receiveStream = HttpContext.Current.Request.InputStream;
RequestFactory.RequestIn(receiveStream, "GoodsReceiptService");
SRSServiceLayer srsServiceLayer = new SRSServiceLayer();
if (stockReceived != null)
return srsServiceLayer.StockRecieved(stockReceived);
else
stockReceivedResponseType response = new stockReceivedResponseType();
response.result = Result.ERROR;
response.errorMessages = EventFactory.GetEvent(107);
return response;
its the
[WebMethod(MessageName = "stockReceivedRequest")]
that is getting qualified.
regards
Aidan -
MVC problem - infinite loop?
I'm going to use a horribly oversimplified example to make my point here, because if I were to describe the actual code I'm looking at, it would take the better part of the afternoon and I'd probably bore you all to tears in the process. So, for the sake of argument, let's assume the following model object:
public class MyModelObject
private int a;
private int b;
private int c;
public void setA(int newA)
a = newA;
b = newA + SOME_CONSTANT;
c = newA + SOME_OTHER_CONSTANT;
public void setB(int newB)
this.setA(SOME_CONSTANT-newB);
public void setC(int newC)
this.setA(SOME_OTHER_CONSTANT-newC);
public int getA()
return a;
public int getB()
return b;
public int getC()
return c;
}So what we see from this is that the setter for one class property actually changes the value of all three class properties (whether this is good design or not is questionable, but keep in mind this is a horribly simplified example for discussion purposes). The point is that the rules regarding the internal state of MyModelObject are governed entirely within that class - the controller and view don't know about these rules (again, questionable design, but bear with me here).
Now let's imagine we have a view class that displays a MyModelObject instance and allows the user to change the value of a, b, or c. We also have a controller class that observes the view and responds to changes. When the user modifies the value of, let's say b, the controller will respond to that change by calling the setB() method in MyModelObject. Problem is, now the model and the view are out of synch... someone has to tell the view that the other two class properties have also been modified as a result of calling setB() - whose responsibility is this? Should the model inform the view that something has changed so that the view can redisplay it, or should the view observe the model and automatically redisplay whenever the model is modified?
More importantly - let's say the controller is observing the view for changes, and the view is observing the model for changes... how do you avoid an infinite loop? For example, the user changes the value of b in the view, which causes the internal state of MyModelObject to be modified, which causes a change in the view, which causes a change in the model, and so on and so forth.
A twist on the above problem is that it is illegal in some Swing components (JTextPane, for instance) to modify the view while a change notification is in progress... so something like this would throw an IllegalStateException:
//somewhere in the controller
public void insertUpdate(DocumentEvent docEvent)
//update the model
myModelObject.handleChange(docEvent);
//now redisplay since the model has changed:
myTextPane.display(myModelObject);
// IllegalStateException is raised - Attempt to mutate in notification
}This fails because you can't change the state of the view component in the event handler for a view change event. How do you get around this using proper MVC architecture? Or am I completely out to lunch here?The view shouldn't send events to the controller unless they make sense... For example, it shouldn't fire a change event when the user types in a new value. But only if the user presses enter, or the view loses focus (if this gesture is taken as equivalent).
So when the change of the view comes from the side-effects of a setter of some property, it should fire no event (so that it will not loop). So it sounds no big problem (if such a distinction of events is easy - it should). -
Hi all
A week ago i bought the RX3870-T2D512E-OC and now i have problems with it, sometimes while playing games i get a BSOD saying that the ati driver got in a infinite loop, sometimes the image just freezes and i have to restart the PC, and sometimes the VPUrecovery restarts the driver. I have tried different versions of the catalyst driver, reinstalled windows but the results are the same.
Does anyone have an idea what the problem could be?Quote from: Frankenputer on 23-April-08, 11:51:41
boon25,
Which Chieftec PSU is that? What specific model?
It's the GPS-550AB A, here is the chieftec page http://www.chieftec.com/smart-power.html
I dont think that something's wrong with the PSU because sometimes i can play games for hours without any crashes, they occur randomly -
Enumeration never reaches nextElement(), goes into infinite loop
String key = "";
while (request.getSession().getAttributeNames().hasMoreElements()) {
key = (String) request.getSession().getAttributeNames().nextElement();
out.println("key = " + key + " and its value = " + (String) request.getSession().getAttribute(key) + "<P>");
}This results in an infinite loop where key is the same first element while the Enumeration never advances.
Why would this happen? Any ideas?
ThanksWhy would this happen? Any ideas? Your code obtains a fresh enumeration with each loop. Don't. Just use the same enumeration. Example:
Enumeration e = request.getSession().getAttributeNames();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
out.println("key = " + key + " and its value = " + (String) request.getSession().getAttribute(key) + "<P>");
}~ -
Infinite loop when trying to unzip Adobe CS6 downloaded from "Arvato"
The downloaded CS6 file "Download_Package.zip" does not open into a functional file (I tried this with Safari and with Chrome with the same results, all cookies enabled).
Here's what I did:
1. Buy Adobe CS6 "design and web premium" academic version from my university bookstore, they gave me an Adobe card with a number on it.
2. Go to the website indicated on the card, entered product code on the back of the card
3. Received email from [email protected] a few seconds later, with instructions, which includes the 36 digit "Redemption Code"
4. As instructed in the email message, went to http://www.adobe.com/go/getserial. This bounces me to the website https://redeem.licenses.adobe.com/getserial/#
5. Inserted Adobe ID and Password where requested.
6. Entered the redemption code, Made a note of the displayed serial number
7. Pressed the "Download" button.
8. The downloaded CS6 file "Download_Package.zip" showed up in my download folder. It automatically unziped itself to a file called "Download_Package.app" with an icon that reads "Arvato Bertelsmann"
9. Clicked on the "Arvato Bertelsmann" icon and it opened a window. Pressed the button "start" and it downloads a 4.53 GB file into a folder called "Package" that contains the archive file called "Adobe Creative Suite 6 Design & Web Premium MAC.zip".
10. When I double click on this file, it creates a new file called "Adobe Creative Suite 6 Design & Web Premium MAC.zip.cpgz"
11. Then when I double click on this file, it just archives itself into a new .zip file. This then becomes an infinite loop.I was able to unzip the file "Adobe Creative Suite 6 Design & Web Premium MAC.zip" using stuffit expander, free from www.stuffit.com. I am not sure why the expander native in Mac OSX v 10.9 ("Archive Utility.app") wasn't able to do this (I tried repeatedly for 2 days). But stuffit expander worked fine and now the software is running...
-
Revision: 4870
Author: [email protected]
Date: 2009-02-05 15:33:52 -0800 (Thu, 05 Feb 2009)
Log Message:
TextView with textAlign="justify" causes infinite loop and eventual RTE. Vellum sometimes returns width and/or height larger than the request width/height due to rounding error. This triggers a contentWidth/Height change event which triggers the scroller which comes back in to TextView updateDisplayList, etc.
QE Notes:
Doc Notes:
Bugs: SDK-19144
Reviewers: Gordon
Ticket Links:
http://bugs.adobe.com/jira/browse/SDK-19144
Modified Paths:
flex/sdk/branches/i10/frameworks/projects/flex4/src/mx/components/TextView.as -
Neep help with infinite loop! Please Help
I currently have a program that allows a user to enter a password protected site and it will return all the images on that page.
I�m trying to allow the user to type in the root URL, i.e. http://stage.diabetescontrolforlife.com/ and have the program pull all the images in all of the child directories. i.e. http://stage.diabetescontrolforlife.com/tool.aspx
I got an inner class similar to the one pulling the <IMG> tag, that pulls the <A> tag. The class adds all the links to a linkList Arraylist. In my main method I call image.getInfo(image.getLinkList()); hoping that I can just pass all the links back through the program and find all the <IMG> tags.
The problem is that, I get the desired output but it displays in an infinite loop, and the program never ends as it searches linkList over and over for <IMG> tags.
So, I tried to adding two different Do, While loops.
Main Method:
do
image.getInfo(image.getLinkList());
test=1;
}while(test != 1);This one does not change the output. Infinite loop continues.
Inner Class:
HTMLEditorKit.ParserCallback callback;
callback = new HTMLEditorKit.ParserCallback ()
public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes, int position)
do
if (tag == HTML.Tag.A)
link = (String)attributes.getAttribute (HTML.Attribute.HREF);
if(link != null && !link.startsWith("javascript") && !link.startsWith("#") && link.startsWith("/"))
link = root + link;
linkList.add(link);
test=1;
}while(test!=1);
public void handleSimpleTag (HTML.Tag tag,MutableAttributeSet aset,int pos)
{if (tag == HTML.Tag.IMG )This one never allows the first URL to be checked, and the program just sits there.
Do you see anything I�m doing wrong, or anyway I can stop the infinite loop?
I think the problem is that both of the searching tag classes are inner classes but I don�t know how to make them their own classes without messing up the whole password checking.
Any advice would be helpful!HTMLEditorKit.ParserCallback callback;
callback = new HTMLEditorKit.ParserCallback ()
public void handleSimpleTag (HTML.Tag tag,MutableAttributeSet aset,int pos)
if (tag == HTML.Tag.IMG )
src = (String)
aset.getAttribute (HTML.Attribute.SRC);
alt = (String)
aset.getAttribute (HTML.Attribute.ALT);
height = (String)
aset.getAttribute (HTML.Attribute.HEIGHT);
width = (String)
aset.getAttribute (HTML.Attribute.WIDTH);
//System.out.println("SRC = " + src);
//System.out.println("ALT = " + alt);
System.out.println("ROOT2"+root);
System.out.println("SRC1"+src);
if(src.startsWith("http"))
else
if(src.startsWith("../"))
src = src.replace("../", "");
src = root +"/"+ src;
else
if(src.startsWith("/"))
src = root + src;
else
src = root +"/"+ src;
System.out.println("SRC2"+src);
altList.add(alt);
srcList.add(src);
heightList.add(height);
widthList.add(width);
currentUrl.add(passUrl);
if(alt == null)
altPresent.add("No");
else
altPresent.add("Yes");
URI uri = null;
try
if (!uriBase.toString ().endsWith ("/") &&
!src.startsWith ("/"))
src = "/" + src;
uri = new URI (src);
uri = uriBase.resolve (uri);
System.out.println("URL"+passUrl);
System.out.println ("uri being " +
"processed ... " + uri);
System.out.println("ROOT3"+root);
catch (URISyntaxException e)
System.err.println ("Bad URI");
return;
// Convert the URI to a URL so that its input
// stream can be obtained.
URL url = null;
try
url = uri.toURL ();
catch (MalformedURLException e)
System.err.println ("Bad URL");
return;
//InputStream is;
//String filename = url.getFile ();
//int i = filename.lastIndexOf ('/');
//if (i != -1)
// filename = filename.substring (i+1);
@Override
public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes, int position)
//while(test!=1)
System.out.println("TEST"+test);
if (tag == HTML.Tag.A)
link = (String)
attributes.getAttribute (HTML.Attribute.HREF);
if(link != null && !link.startsWith("javascript") && !link.startsWith("#") && link.startsWith("/"))
/*if(link.startsWith("/"))
link = root + link;
else
if(!link.startsWith("http"))
link = root +"/"+ link;
//if(link.contains(root))
link = root + link;
test=1;
linkList.add(link);
try
HttpURLConnection urlConn = null;
//URL url = new URL(server);
// Build the string to be used for Basic Authentication <username>:<password>
String userPassword = "testmlr" + ":" + "stage1-7000";
// Base64 encode the authentication string
String encoding = new sun.misc.BASE64Encoder().encode (userPassword.getBytes());
//URLConnection
urlConn = (HttpURLConnection) url.openConnection();
// Enable writing to server ( to write request )
urlConn.setDoOutput(true);
// Enable reading from server ( to read response )
urlConn.setDoInput(true);
// Disable cache
urlConn.setUseCaches(false);
urlConn.setDefaultUseCaches(false);
// Set Basic Authentication parameters
urlConn.setRequestProperty ("Authorization", "Basic " + encoding);
// test(server);
BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
new ParserDelegator().parse(in, callback, false);
System.out.println(in + "test123412341234");
catch (ChangedCharSetException e)
String csspec = e.getCharSetSpec ();
Pattern p = Pattern.compile ("charset=\"?(.+)\"?\\s*;?",
Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher (csspec);
String charset = m.find () ? m.group (1) : "ISO-8859-1";
// Read and parse HTML document using appropriate character set.
public ArrayList getLinkList()
return linkList;
} -
Hello
I'm hoping that someone here might be able to help or point me in the right direction. Apologies for the long post.
Just to set the scene, I am a SQL Server DBA and have very limited experience with System Centre so please go easy on me.
At the company I am currently working they are complaining about very poor performance when running reports (any).
Quick look at the database server and CPU utilisation being a constant 90-95%, meant that you dont have to be Sherlock Holmes to realise there is a problem. The instance consuming the majority of the CPU is the instance hosting the datawarehouse and in particular
a stored procedure in the DWStagingAndConfig database called Staging.GroomDwStagingData.
This stored procedure executes continually for 2 hours performing 500,000,000 reads per execution before "timing out". It is then executed again for another 2 hours etc etc.
After a bit of diagnosis it seems that the issue is either a bug or that there is something wrong with our data in that a stored procedure is stuck in an infinite loop
System Center 2012 SP1 CU2 (5.0.7804.1300)
Diagnosis details
SQL connection details
program name = SC DAL--GroomingWriteModule
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language us_english
set dateformat mdy
set datefirst 7
set transaction isolation level read committed
Store procedures executed
1. dbo.p_GetDwStagingGroomingConfig (executes immediately)
2. Staging.GroomDwStagingData (this is the procedure that executes in 2 hours before being cancelled)
The 1st stored procedure seems to return a table with the "xml" / required parameters to execute Staging.GroomDwStagingData
Sample xml below (cut right down)
<Config>
<Target>
<ModuleName>TransformActivityDim</ModuleName>
<WarehouseEntityName>ActivityDim</WarehouseEntityName>
<RequiredWarehouseEntityName>MTV_System$WorkItem$Activity</RequiredWarehouseEntityName>
<Watermark>2015-01-30T08:59:14.397</Watermark>
</Target>
<Target>
<ModuleName>TransformActivityDim</ModuleName>
<WarehouseEntityName>ActivityDim</WarehouseEntityName>
<RequiredWarehouseEntityName>MTV_System$WorkItem$Activity</RequiredWarehouseEntityName>
<ManagedTypeViewName>MTV_Microsoft$SystemCenter$Orchestrator$RunbookAutomationActivity</ManagedTypeViewName>
<Watermark>2015-01-30T08:59:14.397</Watermark>
</Target>
</Config>
If you look carefully you will see that the 1st <target> is missing the ManagedTypeViewName, which when "shredded" by the Staging.GroomDwStagingData returns the following result set
Example
DECLARE @Config xml
DECLARE @GroomingCriteria NVARCHAR(MAX)
SET @GroomingCriteria = '<Config><Target><ModuleName>TransformActivityDim</ModuleName><WarehouseEntityName>ActivityDim</WarehouseEntityName><RequiredWarehouseEntityName>MTV_System$WorkItem$Activity</RequiredWarehouseEntityName><Watermark>2015-01-30T08:59:14.397</Watermark></Target><Target><ModuleName>TransformActivityDim</ModuleName><WarehouseEntityName>ActivityDim</WarehouseEntityName><RequiredWarehouseEntityName>MTV_System$WorkItem$Activity</RequiredWarehouseEntityName><ManagedTypeViewName>MTV_Microsoft$SystemCenter$Orchestrator$RunbookAutomationActivity</ManagedTypeViewName><Watermark>2015-01-30T08:59:14.397</Watermark></Target></Config>'
SET @Config = CONVERT(xml, @GroomingCriteria)
SELECT
ModuleName = p.value(N'child::ModuleName[1]', N'nvarchar(255)')
,WarehouseEntityName = p.value(N'child::WarehouseEntityName[1]', N'nvarchar(255)')
,RequiredWarehouseEntityName =p.value(N'child::RequiredWarehouseEntityName[1]', N'nvarchar(255)')
,ManagedTypeViewName = p.value(N'child::ManagedTypeViewName[1]', N'nvarchar(255)')
,Watermark = p.value(N'child::Watermark[1]', N'datetime')
FROM @Config.nodes(N'/Config/*') Elem(p)
/* RESULTS - NOTE THE NULL VALUE FOR ManagedTypeViewName
ModuleName WarehouseEntityName RequiredWarehouseEntityName ManagedTypeViewName Watermark
TransformActivityDim ActivityDim MTV_System$WorkItem$Activity NULL 2015-01-30 08:59:14.397
TransformActivityDim ActivityDim MTV_System$WorkItem$Activity MTV_Microsoft$SystemCenter$Orchestrator$RunbookAutomationActivity 2015-01-30 08:59:14.397
When the procedure enters the loop to build its dynamic SQL to delete relevant rows from the inbound schema tables it concatenates various options / variables into an executable string. However when adding a NULL value to a string the entire string becomes
NULL which then gets executed.
Whilst executing "EXEC(NULL)" would cause SQL to throw an error and be caught, executing the following doesnt
DECLARE @null_string VARCHAR(100)
SET @null_string = 'hello world ' + NULL
EXEC(@null_string)
SELECT @null_string
So as it hasnt caused an error the next part of the procedure is to move to the next record and this is why its caught in an infinite loop
DELETE @items WHERE ManagedTypeViewName = @View
The value for the variable @View is the ManagedTypeViewName which is NULL, as ANSI_NULLS are set to ON in the connection and not overridded in the procedure then the above statement wont delete anything as it needs to handle NULL values differently (IS NULL),
so we are now stuck in an infinite loop executing NULL for 2 hours until cancelled.
I amended the stored procedure and added the following line before the loop statement which had the desired effect and "fixed" the performance issue for the time being
DELETE @items WHERE ManagedTypeViewName IS NULL
I also noticed that the following line in dbo.p_GetDwStagingGroomingConfig is commented out (no idea why as no notes in the procedure)
--AND COALESCE(i.ManagedTypeViewName, j.RelationshipTypeViewName) IS NOT NULL
There are obviously other ways to mitigate the dynamic SQL string being NULL, there's more than one way to skin a cat and thats not why I am asking this question, but what I am concerned about is that is there a reason that the xml / @GroomingCriteria is incomplete
and / or that the procedures dont handle potential NULL values.
I cant find any documentation, KBs, forum posts of anyone else having this issue which somewhat surprises me.
Would be grateful of any help / advice that anyone can provide or if someone can look at their 2 stored procedures on a later version to see if it has already been fixed. Or is it simply that we have orphaned data, this is the bit that concerns most as I dont
really want to be deleting / updating data when I have no idea what the knock on effect might be
Many many thanks
AndyFirst thing I would do is upgrade to 2012 R2 UR5. If you are running non-US dates you need the UR5 hotfix also.
Rob Ford scsmnz.net
Cireson www.cireson.com
For a free SCSM 2012 Notify Analyst app click
here -
Hello Experts,
For loading ODS2 we are making a lookup on ODS1 for 0material based on
purchaing document number, item line item.
Is there any mistake in the start routine or update routine.
Because the load goes in infinite loop. I think update routine should be changed.
Any suggestions are appreciated
Start routine:
data: begin of itab occurs 0,
pur_doc like /BIC/AZODS100-OI_EBELN,
item like /BIC/AZODS100-OI_EBELP,
material like /BIC/AZODS100-material,
end of itab.
clear itab.
select OI_EBELN OI_EBELP MAT_PLANT from /BIC/AZODS100
into table itab.
Update routine for 0material
loop at itab where pur_doc = COMM_STRUCTURE-OI_EBELN
and item = COMM_STRUCTURE-OI_EBELP.
RESULT = itab-matplant.
endloop.Hi,
this takes a long time, because with each record of your data packaged it is doing the loop and scanning each row of the internal table. Use the following instead.
Start routine:
types: begin of t_itab,
pur_doc like /BIC/AZODS100-OI_EBELN,
item like /BIC/AZODS100-OI_EBELP,
material like /BIC/AZODS100-material,
end of t_itab.
data: itab type hashed table of t_itab with unique key pur_doc item.
select OI_EBELN OI_EBELP MAT_PLANT from /BIC/AZODS100
into table itab order by oi_ebeln oi_ebelp mat_plant.
I hope these fields are the key of the ods object.
Update routine for 0material
data: wa_itab type t_itab.
read table itab into wa_itab with table key pur_doc = COMM_STRUCTURE-OI_EBELN
item = COMM_STRUCTURE-OI_EBELP.
if sy-subrc = 0.
RESULT = wa_itab-matplant.
else.
clear result.
endif.
Hope this helps
regards
Siggi -
Infinite loop/afrLoop when deploying ADF application to standalone weblogic
Working with Oracle ADF / JDeveloper 11.1.2.2
I have enabled ADF security in my application and am using JAAS combined with Oracle EBS users and roles to provide security to the application. Testing on my local integrated weblogic server works fine.
When deploying my Oracle ADF application to a standalone Weblogic server through an EAR file, requesting a JSF page causes the server to go into an infinite loop on both IE and firefox.
GET /test-app/faces/login.jsf HTTP/1.1 200
GET /test-app/faces/login.jsf?_afrLoop=346001033248597&_afrWindowMode=0&Adf-Window-Id=w0 HTTP/1.1 302
GET /test-app/adfAuthentication HTTP/1.1 302
GET /test-app/faces/login.jsf HTTP/1.1 200
GET /test-app/faces/login.jsf?_afrLoop=346001340281597&_afrWindowMode=0&Adf-Window-Id=w0 HTTP/1.1 302
GET /test-app/adfAuthentication HTTP/1.1 302
GET /test-app/faces/login.jsf;jsessionid=syWvP1nMY1L87BySh2JbTd1tb4SY0HzDw6T3LvLctvkbMWKmqqJv!1800986117 HTTP/1.1 200
GET /test-app/adfAuthentication HTTP/1.1
Reviewing some of the suggestions from the forum and from the link below, I have tried fixing the issue through updates to my web.xml - but am still having the same issue.
https://blogs.oracle.com/jdevotnharvest/entry/solving_jdeveloper_11gr2_issue_with
Updated web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>Allowed ADF Resources</web-resource-name>
<url-pattern>/adf/*</url-pattern>
<url-pattern>/afr/*</url-pattern>
<url-pattern>/bi/*</url-pattern>
<url-pattern>/servlet/GraphServlet/*</url-pattern>
<url-pattern>/servlet/GaugeServlet/*</url-pattern>
<url-pattern>/mapproxy/*</url-pattern>
<url-pattern>/adflib/</url-pattern>
</web-resource-collection>
<web-resource-collection>
<web-resource-name>allPages</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<web-resource-collection>
<web-resource-name>adfAuthentication</web-resource-name>
<url-pattern>/adfAuthentication</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>valid-users</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/faces/login.jsf</form-login-page>
<form-error-page>/faces/login-error.jsf</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>valid-users</role-name>
</security-role>
weblogic.xml
<security-role-assignment>
<role-name>valid-users</role-name>
<principal-name>users</principal-name>
</security-role-assignment>
I know other users have experienced similar issues - but I am having trouble debugging or troubleshooting why this is happening.
Any suggestions on how to further troubleshoot or resolve this issue would be appreciated!
DanI was able to resolve the login page looping issue.
The issue is related to the login page being a JSF page based on a page template.
When I created the JSF login page as a page template - the template contains a binding:
<af:pageTemplate viewId="/test-template.jsf" value="#{bindings.ptb1}" id="pt1">
When I deploy my application to the test weblogic server, the anonymous-role grants are not being respected. So even though I grant view access to the login JSF page to anonymous-role -- it appears that weblogic is trying to request a login for any page with a pageDef (including the login page). By re-creating the login page with no pageDef (a JSF page that does not use a page template) -- the login page is displayed (rather than entering into a loop).
There is still a seperate issue with the anonymous-role grant not working as I would expect it to work that I will need to troubleshoot further. -
After updating to Mavericks I have this problem. From what I guess, my audio out (either the signal, or the entire soundcard) cuts power after being idle for about 30 seconds. This results in a static noise when connected to my external amplifier. From various forums, dating back to 2007/8 I can see this is not a new problem. The only workaround is playing an empty .wav sound on infinite loop (either by using a terminal command, or by a third-pary app which does this for you), preventing the audio out from timing out and cutting power. This seems to me to be an undisirable proceeding. Even if minimal, it uses extra power and memory. Is there any way to prevent the sound card from timing out like this?
Ok. I tried disconnecting the charger from my macbook and that actually helped. The noise is now so low it is hardly audible, so I guess it has to do with a ground loop. But still, even when hardly audible it still only happens after 30 seconds of idle time. Is that because my theory about a timeout is correct, or is there some other reason for this? This used to just happen when my macbook went on standby (sleep), but now it happens allready after 30 seconds, so even though it may be a loop, it wasn't like this before. I'd love to understand what is different now.
Maybe you are looking for
-
I am unable to re-install itunes. The installer starts ok and then indicates that it can not access a network !! I have tried to uninstall but get the sme error message. I have used 3rd party software to uninstal but still have no joy. My pc is runn
-
How to put Menu in WebDynPro for ABAP
How to put Menu in WebDynPro for ABAP
-
I have an address book list of 23 names. I want to send a small, 4 paragraph email to all. When I try to send it, I get an error message which says that the message exceeds the temporary size limit of the server. I've sent messages in the past to the
-
MIRO R payment block without price difference
Dear gurus, I'm stuck in the middle of a problem: please help me solving it. I've done a MIRO related to a good receipt: payment lock has been set to "R" value in FI document. Invoice value is the same of good receipt value: no price difference at al
-
Long Text Field in Production Order
Hi Can Any One Tel about the field name of long text in Production Order